一个名为
Aby
的 EJB 方法调用另一个名为 Bob
的 EJB 方法。其中Bob
标记有 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
。那么Bob
事务是在什么时候提交的呢? a)当Bob
调用结束时 b)当Aby
调用结束时 c)其他情况,何时提交?答案是:a)当Bob
调用结束时事务提交。
@AroundInvoke
方法)。 较少人知道的是,声明bob
方法的类也可以声明一个@AroundInvoke
方法,然后该bean将自动成为自己的拦截器。 因此,事务在调用进入拦截器链之前就开始了(包括bean),并且在调用离开拦截器链时终止(提交或回滚)。 - David Blevinsrequires_new
注解的Bob方法,则在恢复Aby事务之前,bob事务会被提交。这似乎与Petr Mensik的引述相符:“Aby一直被暂停,直到Bob事务被提交。”因此,答案是A而不是B。 - Gab