Java 如果SessionScoped和无状态方法调用混合在一起,事务会发生什么情况

Java 如果SessionScoped和无状态方法调用混合在一起,事务会发生什么情况,java,jakarta-ee,ejb,cdi,stateless,Java,Jakarta Ee,Ejb,Cdi,Stateless,如果在DStateless.method4()或BSession.method2()中发生错误,在下面的场景中会发生什么?我希望CStateless.method3()和DStateless.method4()共享相同的事务 允许在EJB和CDI中进行此类调用吗 ASession.method1() (calls)-> CStateless.method3() -> BSession.method2() -> DStateless.method4(); 是的,这是允许的 假

如果在
DStateless.method4()或
BSession.method2()中发生错误,在下面的场景中会发生什么?我希望
CStateless.method3()
DStateless.method4()
共享相同的事务

允许在EJBCDI中进行此类调用吗

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

是的,这是允许的


假设
method1()
未在事务中运行,事务边界将在
method3()
附近<代码>方法4()
将使用相同的事务。

在这种情况下,它们将共享相同的事务。唯一的问题是,为什么要从无状态调用sessionscoped beanbean@maress主要原因是sessionscopedbean进行了一些文件操作。另一个原因是会话作用域bean有更多关于该做什么的信息,这仍然不能保证从无状态bean调用会话作用域bean。在会话bean中执行所有需要会话/请求上下文的操作,然后将下一个逻辑上载到无状态bean。会话bean可能会调用多个无状态bean来完成其任务work@maress是的,会话bean可以调用多个无状态bean,但是如果所有调用都应该在一个事务中,该怎么办呢?
@SessionScoped
class ASession {
   method1();
}

@SessionScoped
class BSession {
   method2();
}

@Stateless
class CStateless {
   method3();
}

@Stateless
class DStateless {
   method4();
}