3

当使用 Java Transaction API (JTA) 并且我向当前事务注册了同步时,如果事务超时,是否会调用 afterCompletion() 方法?如果是这样,什么时候会调用 afterCompletion() 方法,即一旦事务运行超过分配的超时值,或者当事务后超时的第一个操作发生时?status 参数有什么值(我假设它是 STATUS_ROLLEDBACK)?

4

1 回答 1

2

使用 Java Transaction API (JTA) 并Synchronization在当前事务中注册 a 时,afterCompletion()如果事务超时,是否会调用该方法?

afterCompletion方法在事务提交回滚后调用,因此应该在超时后调用。

如果是这样,何时afterCompletion()调用该方法,即事务运行超过分配的超时值或事务后超时的第一个操作发生时?

AFAIK,如果事务在超时值过去之前没有终止(提交或回滚),事务系统将自动回滚它。换句话说,它不等待事务的后续工作。

status 参数有什么值(我假设它会被回滚)?

我确实会Status.STATUS_ROLLEDBACKafterCompletion调用时说。

于 2010-06-27T17:42:22.647 回答