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 数据库中相应的表死锁,这时事务超时就形同虚设了。