下面是我的理解,JTA / JTS处理事务超时问题.但是我找不到我的文件或材料来支持我的理解.我的理解正确吗?您知道有关此问题的材料吗?
Application Server遍历所有事务以检查超时.如果发生事务超时,则应用程序服务器标记将回滚该事务,并记下详细信息.但是,此时Application Server既不会引发异常,也不会中断事务.当事务线程继续尝试访问另一个事务资源(如JDBC / JMS)时,实现JTA接口的事务资源将首先检查回滚标志,然后再继续.然后,此时,将抛出RollbackException.
==========
测试用例1:
将交易超时设置为10秒
一,交易开始
二.睡眠20秒
三,系统输出“睡眠结束”
结果:超时发生在第10秒,并且系统注销记录了超时详细信息,但没有引发异常.将打印“睡眠结束”.
==========
测试案例2:
将交易超时设置为10秒
一,第一次访问数据库
IV.第二次访问数据库
V.系统退出“睡眠结束”
结果:超时发生在第10秒,但没有引发异常.第一次访问数据库时引发异常. “睡眠结束”将不会打印.
==========
测试案例3:
将交易超时设置为10秒
一,交易开始
结果:超时发生在第10秒,并且系统注销记录了超时详细信息.没有异常抛出,事务线程被卡住.因此,事务超时控制无法处理数据库超时问题.我对此很困惑.
以我的理解,在使用Spring事务管理(JTA)和EJB时,上述行为应该相同.我对吗?
感谢您的帮助!
最佳答案