WebSphere上应用jta

手头有个项目,是跑在WebSphere上的。
由于没有配置使用jta,所以数据库操作时,时不时报WLTC0032E错误。于是就打算启用jta。但一起用jta,就发觉程序无法启动:
[quote][07-3-30 9:42:45:141 CST] 7ca9f0f8 LTCUserTranCa E WLTC0037E: 无法启动全局事务。LocalTransactionContainment 已经是活动的。[/quote]
不得其解。
无厘头地翻阅资料,在sprin-ref中无意看到如下一句:
[quote]如果你使用全局事务,你必须为你的所有事务操作使用Spring的 org.springframework.transaction.jta.JtaTransactionManager。 否则Spring将试图在象容器数据源这样的资源上执行局部事务。这样的局部事务没有任何 意义,好的应用服务器会把这作为一个错误。[/quote]
立即想起,代码中有部分dao调用的模块是不设置事务管理的!
改动代码,重新编译后发布,再测试,果然不再报错了。
教训与经验:
所有的DAO调用,无论多小,都该放置于Service层,并令service被spring事务管理。这样,才不会发生我所碰到的问题。

你可能感兴趣的:(WebSphere上应用jta)