如果DStateless.method4()BSession.method2()中发生错误,在以下情况下会发生什么?我希望CStateless.method3()DStateless.method4()共享同一笔交易。

是否允许在EJB和CDI中进行此类调用?

ASession.method1() (calls)-> CStateless.method3() -> BSession.method2() -> DStateless.method4();




@SessionScoped
class ASession {
   method1();
}

@SessionScoped
class BSession {
   method2();
}

@Stateless
class CStateless {
   method3();
}

@Stateless
class DStateless {
   method4();
}

最佳答案

是的,这是允许的。

假设method1()不在事务中运行,则事务边界将围绕method3()method4()将使用相同的事务。

09-26 12:08