Spring JTA/JTS如何处理事务超时问题?
以下是我对JTA/JTS处理事务超时问题的理解。但我找不到支持我理解的文件或材料。我的理解正确吗?你知道有什么材料是关于这个问题的吗 应用服务器迭代所有事务以检查超时。如果发生事务超时,application server将标记该事务的回滚,并记录详细信息但应用服务器此时既不会引发异常也不会中断事务。当事务线程继续尝试访问另一个事务资源(如JDBC/JMS)时,实现JTA接口的事务资源将首先检查回滚标志,然后再继续。然后在这一时刻,抛出RollbackException ========== 测试用例1: 将事务超时设置为10秒 一、交易开始 二,。睡20秒 三、 系统输出“睡眠结束” 结果:超时发生在10秒,系统将注销超时详细信息,但不会引发异常。将打印“睡眠结束” ========== 测试用例2: 将事务超时设置为10秒 一、交易开始 二,。睡20秒 三、 第一次访问数据库 四、 第二次访问数据库 V.系统输出“睡眠结束” 结果:超时发生在10秒,系统将注销超时详细信息,但不会引发异常。第一次访问数据库时引发异常。“睡眠结束”将不会打印 ========== 测试用例3: 将事务超时设置为10秒 一、交易开始 二,。访问数据库和数据库死锁 结果:超时发生在10秒,系统将记录超时详细信息。没有异常抛出,事务线程被卡住因此事务超时控制无法处理数据库超时问题。我对此感到非常困惑 根据我的理解,在使用spring事务管理(JTA)和EJB时,上述行为应该是相同的。我说得对吗?Spring JTA/JTS如何处理事务超时问题?,spring,transactions,timeout,ejb,jta,Spring,Transactions,Timeout,Ejb,Jta,以下是我对JTA/JTS处理事务超时问题的理解。但我找不到支持我理解的文件或材料。我的理解正确吗?你知道有什么材料是关于这个问题的吗 应用服务器迭代所有事务以检查超时。如果发生事务超时,application server将标记该事务的回滚,并记录详细信息但应用服务器此时既不会引发异常也不会中断事务。当事务线程继续尝试访问另一个事务资源(如JDBC/JMS)时,实现JTA接口的事务资源将首先检查回滚标志,然后再继续。然后在这一时刻,抛出RollbackException ========== 测
谢谢你的帮助 经过测试,证明我的理解应该是正确的 将结果总结如下: •事务超时控制仅影响事务活动(例如:访问数据库/发送JMS消息) •发生超时时,应用服务器不会立即中断当前事务线程,相反,应用服务器只记录详细信息。事务提交或尝试访问下一个事务活动时将引发超时异常 •事务超时控制无法处理DB死锁问题。但是在某些情况下,DB2有死锁防止机制来释放死锁并回滚事务