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.3.6+guice4+jpa(hibernate4)的配置-第一篇_第1张图片

这些文件是最基本的strtus2,hibernate4,jpa2,guice的jar文件了。我在此只想做个最基本的,其他项目用到的时候再根据项目情况添加jar文件。

2.配置文件


除了图上面的这几个(位置在src源码路径下,发布后就在WEB-INF/classes下),就是web.xml了

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

文件基本上交代过了,等下一篇再写具体如何配置。

你可能感兴趣的:(struts2,jpa,Guice)