当前位置: 代码迷 >> Web前端 >> WebSphere下应用jta
  详细解决方案

WebSphere下应用jta

热度:118   发布时间:2012-11-07 09:56:10.0
WebSphere上应用jta
手头有个项目,是跑在WebSphere上的。
由于没有配置使用jta,所以数据库操作时,时不时报WLTC0032E错误。于是就打算启用jta。但一起用jta,就发觉程序无法启动:
引用
[07-3-30 9:42:45:141 CST] 7ca9f0f8 LTCUserTranCa E WLTC0037E: 无法启动全局事务。LocalTransactionContainment 已经是活动的。

不得其解。
无厘头地翻阅资料,在sprin-ref中无意看到如下一句:
引用
如果你使用全局事务,你必须为你的所有事务操作使用Spring的 org.springframework.transaction.jta.JtaTransactionManager。 否则Spring将试图在象容器数据源这样的资源上执行局部事务。这样的局部事务没有任何 意义,好的应用服务器会把这作为一个错误。

立即想起,代码中有部分dao调用的模块是不设置事务管理的!
改动代码,重新编译后发布,再测试,果然不再报错了。
教训与经验:
所有的DAO调用,无论多小,都该放置于Service层,并令service被spring事务管理。这样,才不会发生我所碰到的问题。