strtus2.3.6+guice4+jpa(hibernate4)的配置-第一篇

首先要說一下,我配置這種組合也是遇到問題纔想起來的,以前一直用Spring+hibernate的組合,但是後來發現了spring數據庫事務管理有致命的問題,就是對一個表的讀寫頻繁會導致數據源死鎖,哪怕單機訪問,在一個界面上發生了對同一個表的讀寫,都會造成死鎖。這個問題由來已久,只是我沒有注意到,而且寫網站類高併發的項目也不多,所以沒有發現。直到一個項目中,客戶使用出了這個問題。介紹一下具體情況,有3個表,角色、權限,角色-權限對應表。出問題的功能是爲某個角色分配權限。使用extjs做前端,在一個窗口內,顯示已分配權限列表,未分配權限列表,在未分配權限列表中可以勾選checkbox,點擊保存把權限分給這個角色。問題的出現:勾選了5、6個權限後,點保存,通過extjs提交數據,服務器端保存,並返回成功與否的標誌,客戶端讀到成功標誌,通過extjs的方式刷新窗口上已分配,未分配的列表,就是這個常用的功能,可能點個2,3次就造成數據源死鎖。也不是連接沒釋放,其實還遠遠沒有到數據源的連接限制。

我翻閱很多資料,並且用最新的spring4+hibernate4做了試驗,得到了一個無奈的結論:如果用spring管理事務,這個問題無解。只有痛下決心甩掉spring。

  但是如果不用spring,那些依賴注入、aop如何來做呢,畢竟這中開發方式比較節省代碼,可維護性很好。經過查閱資料,決定用guice作爲di和aop的框架;mvc還是使用多年沒用過的老夥計-struts。以前最後用的版本還是1.1,現如今依然大不相同了,雖然叫struts2了。

  至於說guice注入速度比spring快這些優勢,我倒是不關心,主要別有數據源死鎖問題存在就好。而且guice功能雖然不如spring多,但是足夠靈活。

   搭建環境框架,先瞄準最常用的功能-整合與數據庫訪問,這才動手幹活。。。具體的過程就不說了,自己做個記錄,希望也能幫上其他人的忙。這是個myeclipse的web工程:

1.jar文件


這些文件是最基本的strtus2,hibernate4,jpa2,guice的jar文件了。我在此只想做個最基本的,其他項目用到的時候再根據項目情況添加jar文件。

2.配置文件


除了圖上面的這幾個(位置在src源碼路徑下,發佈後就在WEB-INF/classes下),就是web.xml了

struts.xml,log4j.properties就不細說了。persistence.xml是jpa的配置文件,需要放到META-INF下。

文件基本上交代過了,等下一篇再寫具體如何配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章