quality@glassfish.java.net

GF v2ur2 -----EJBs Transaction Manage Problem When Networks between fail to connect.

From: dinghy <dingis_at_qq.com>
Date: Fri, 21 Nov 2008 15:23:28 +0800

This Problem is from a friend in our QQ group[glassfish 47140531]. The ejb version is 3.0
 
Generally,here are two seperate Apps, as A on A_SERVER and B on B_SERVER ,
 
 EJB_A needs to remotely call the EJB_B to fulfil some DataBase-commands on B_SERVER.
 
At the most time,if any error or Time_Out happens on A or B,transaction will roll back.
 
But when EJB_A is calling EJB_B,
 
if the network between A and B fails to connect,
 
EJB_B will wait until all the tables in B_SERVER are deadly locked,and then Transaction Timeout seems useless....

 
大概来说,就是两个相互独立的系统 A 和 B ,A 中的 ejb_a 负责远程调用 B 中 的ejb_b来执行一些 B 中的本地数据库操作。
正常的情况下两边任何一边出错,或者操作超时,都会进行回滚。
但当 ejb_a 调用 ejb_b 的期间,网络中断的话, ejb_b 会一直等待导致 B 数据库中相应的表死锁,这时事务超时就形同虚设了。