论坛首页 Java企业应用论坛

请教JTA中跨数据库事备的实现原理

浏览 20199 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-08-24  
charon 写道
欠可靠的网络和系统中,不论使用哪种协议,完全的可靠性是达不到的。但是两阶段提交能够解决绝大部分问题。

也就是说,在广域网上,难以保证完全可靠的事务,不管采用多少次提交,因为网络连接可能在提交阶段出错。
0 请登录后投票
   发表时间:2004-08-31  
puzzle了很久的问题....

在XAResouce1 and 2 commit的时候,
可能XAResouce1 commit() 成功了,XAResouce2 commit()失败了。
这时候,会抛出一个 “启发式异常”。

不知道这个异常的几率有多大?由什么原因引起?



mooniscrazy 写道
charon 写道
欠可靠的网络和系统中,不论使用哪种协议,完全的可靠性是达不到的。但是两阶段提交能够解决绝大部分问题。

也就是说,在广域网上,难以保证完全可靠的事务,不管采用多少次提交,因为网络连接可能在提交阶段出错。


一般appa server和db server之间的连接是可靠的(在一个机器上或者intranet中)
0 请登录后投票
   发表时间:2004-08-31  
zzsczz 写道
puzzle了很久的问题....

在XAResouce1 and 2 commit的时候,
可能XAResouce1 commit() 成功了,XAResouce2 commit()失败了。
这时候,会抛出一个 “启发式异常”。

不知道这个异常的几率有多大?由什么原因引起?


启发式异常,HeuristicCompletionException。Heuristic翻译为启发式(不是我翻译的)。我对Heuristic也一知半解,而且没有找到足够的参考资料,下面仅仅根据Java Doc,给出自己的一点理解,请指正。

大意是,
如果事务处理系统支持启发式(heuristics),那么允许准备的参与者做出关于提交或回滚的单方面决定。如果参与者所作的选择与其他参与者的不同,非原子性行为就出现了。

前面说的那种情况,第一个XA Resource已经提交了,第二个XA Recource提交失败,两个参与者做出不同了选择(尽管是被动的)。这个原因产生了HeuristicCompletionException。

Spring HeuristicCompletionException Java doc
http://www.springframework.org/docs/api_1.0m1/org/springframework/transaction/HeuristicCompletionException.html

事务处理的nuts和bolts
http://www2.linuxforum.net/mhss/TP/NutsAndBoltsOfTP.html
0 请登录后投票
   发表时间:2004-08-31  
去Mike Spille老的那个blog上看看
http://jroller.com/page/pyrasun/Weblog?catname=/XA
他写过一个XA Exposed系列,一共分三部分。很说明问题。
0 请登录后投票
   发表时间:2004-09-01  
想想tcp的三方握手?
如果我两个都commit()了之后,让这两个数据库握一下手不就行了?
0 请登录后投票
论坛首页 Java企业应用版

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