2

不知何故,通常的 Java EE 文档资源中似乎缺少这条信息:

除非有外部事务处于活动状态,否则容器会在调用具有容器管理事务的 EJB 的业务方法时启动一个新事务,前提是该业务方法被分配了一个需要事务的事务属性(例如TransactionAttributeType.REQUIRED)。

现在,如果此方法调用被方法拦截器拦截

@AroundInvoke
public Object onMethodCall(InvocationContext ctx) throws Exception
{
  doSomethingBefore();
  ctx.proceed();
  doSomethingAfterwards();
}

方法doSomethingBefore()doSomethingAfter()在这个新的事务上下文中被调用,还是事务被限制在调用中ctx.proceed()

4

1 回答 1

3

来自@AroundIvoke的Javadoc :

AroundInvoke 方法调用发生在与它们所插入的方法相同的事务和安全上下文中。

于 2013-09-10T14:39:00.593 回答