我可以在同一个 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",这只是另一个没有容器干预的方法调用。
我有以下代码结构,我需要有关如何启动从同一 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",这只是另一个没有容器干预的方法调用。