论坛首页 Java企业应用论坛

一种在Spring中同时回滚多个事物管理器的方法

浏览 13574 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-03-15  
Spring中设计有各种PlatformTransactionManager,化简了事物管理的设计,但是如果某个业务要运用到多个事物管理器而又没有jta,就需要自己解决了

这里提供一个比较简单的方案.就是设计一个自定义的PlatformTransactionManager.这个实现中可以配置多个不同事物管理器.当需要递交时,依次对所配置的PlatformTransactionManager进行递交.当回滚时,依次回滚.

代码较长,就不贴出来,详见附件
   发表时间:2005-03-17  
很好,正是我想要的解决方案,谢啦
0 请登录后投票
   发表时间:2005-03-17  
这样做是有问题的,假设PlatformTransactionManager1 commit成功, 然后是PlatformTransactionManager2 commit失败, 这个时候就无法rollback已经commit成功的PlatformTransactionManager1
0 请登录后投票
   发表时间:2005-03-18  
找了一下以前的帖子,这个讨论得比较详细了

http://www.hibernate.org.cn/viewtopic.php?t=6302&postdays=0&postorder=asc&start=0


一个事务commit后,还可以recover的特性,不是每个支持事务的数据库都支持的。暂时来说,我觉得上面的解决方案,是一个比较简单的利用Spring,实现把包含了多个事务管理的业务方法,集中为一个事务管理的简易方法,当然,不是彻底和完善的解决方法。但是实际上,即使是JTA,也不是100%可靠和完善啊。而且如果要彻底实现JTA,即使真正配置成功了,对应用服务器和数据库服务器的局限性也会很高的。
0 请登录后投票
   发表时间:2005-06-24  
[color=darkred]有一个问题需要考虑,什么时候会提交失败,能否容忍[/color]
0 请登录后投票
   发表时间:2007-05-04  
pikachu 写道
Spring中设计有各种PlatformTransactionManager,化简了事物管理的设计,但是如果某个业务要运用到多个事物管理器而又没有jta,就需要自己解决了

这里提供一个比较简单的方案.就是设计一个自定义的PlatformTransactionManager.这个实现中可以配置多个不同事物管理器.当需要递交时,依次对所配置的PlatformTransactionManager进行递交.当回滚时,依次回滚.

代码较长,就不贴出来,详见附件

今天翻老精华贴,楼主,这个事务真的有实际用处吗?
如果第一个事物提交成功,第二个事务提交失败怎么办?
真要解决多个事务,还得JTA吧?  如果JTA真的这么容易解决了,那么多厂家那么辛苦才作出一个JTA阿?
也许是我没看明白吧。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics