不知何故,通常的 Java EE 文档资源中似乎缺少这条信息:
除非有外部事务处于活动状态,否则容器会在调用具有容器管理事务的 EJB 的业务方法时启动一个新事务,前提是该业务方法被分配了一个需要事务的事务属性(例如TransactionAttributeType.REQUIRED
)。
现在,如果此方法调用被方法拦截器拦截
@AroundInvoke
public Object onMethodCall(InvocationContext ctx) throws Exception
{
doSomethingBefore();
ctx.proceed();
doSomethingAfterwards();
}
方法doSomethingBefore()
和doSomethingAfter()
在这个新的事务上下文中被调用,还是事务被限制在调用中ctx.proceed()
?