我可以在同一个 EJB 中从另一个 TransactionAttributeType.NOT_SUPPORTED 的方法调用一个 TransactionAttributeType.REQUIRED 的方法吗

Can I call a method with TransactionAttributeType.REQUIRED from another method with TransactionAttributeType.NOT_SUPPORTED in same EJB

我有以下代码结构,我需要有关如何启动从同一 EJB 中的 NOT_SUPPORTED 事务类型方法级联的本地事务的指南。

@Stateless
@TransactionManagement(value = TransactionManagementType.CONTAINER)
public class SessionBean implements SessionBeanInterface{
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public void methodA() {
        methodB();
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void methodB() {

    }

}

目前,当我尝试这个时,我遇到了以下异常。

No active transaction for PuId=App#EJB.jar#Persistence

您调用 "methodB" 的方式不会让 EJB 容器有机会为您启动事务上下文。为此,您必须通过远程或本地 views/interface 调用该方法。

容器为您提供了这些附加功能,因此有必要通过接口路由您的调用。 (请注意,这是代理设计模式)。

如果像上面的代码片段一样直接调用"methodB",这只是另一个没有容器干预的方法调用。