春季-JTA / JTS如何处理事务超时问题?
下面是我的理解,JTA / JTS处理事务超时问题.但是我找不到我的文件或材料来支持我的理解.我的理解正确吗?您知道有关此问题的材料吗? Application Server遍历所有事务以检查超时.如果发生事务超时,则应用程序服务器标记将回滚该事务,并记下详细信息.但是,此时Application Server既不会引发异常,也不会中断事务.当事务线程继续尝试访问另一个事务资源(如JDBC / JMS)时,实现JTA接口的事务资源将首先检查回滚标志,然后再继续.然后,此时,将抛出RollbackException. ========== 测试用例1: 一,交易开始 二.睡眠20秒 三,系统输出“睡眠结束” 结果:超时发生在第10秒,并且系统注销记录了超时详细信息,但没有引发异常.将打印“睡眠结束”. ========== 测试案例2: 一,第一次访问数据库 IV.第二次访问数据库 V.系统退出“睡眠结束” 结果:超时发生在第10秒,但没有引发异常.第一次访问数据库时引发异常. “睡眠结束”将不会打印. ========== 测试案例3: 一,交易开始 二.访问数据库和数据库死锁 结果:超时发生在第10秒,并且系统注销记录了超时详细信息.没有异常抛出,事务线程被卡住.因此,事务超时控制无法处理数据库超时问题.我对此很困惑. 以我的理解,在使用Spring事务管理(JTA)和EJB时,上述行为应该相同.我对吗? 感谢您的帮助! 最佳答案
经过测试,证明我的理解应该是正确的.
总结结果如下: ?事务超时控制仅影响事务活动(例如:访问数据库/发送JMS消息). ?应用程序服务器不会在发生超时时立即中断当前事务线程,而是,应用程序服务器仅记下详细信息.事务提交或尝试访问下一个事务活动时,将抛出超时异常. ?事务超时控制无法处理数据库死锁问题.但是,在某些情况下,DB2具有防止死锁并释放死锁并回滚事务的机制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |