在JSF托管bean中调用多个EJB方法,每个方法是在同一个事务中运行还是在单独的事务中运行?
我有以下托管bean:在JSF托管bean中调用多个EJB方法,每个方法是在同一个事务中运行还是在单独的事务中运行?,jsf,jakarta-ee,transactions,ejb,managed-bean,Jsf,Jakarta Ee,Transactions,Ejb,Managed Bean,我有以下托管bean: @ManagedBean @ViewScoped public class View { @EJB private Bar bar public void foo() { bar.do(); bar.do(); bar.do(); } } 这会导致3个单独的事务(每个bar.do()调用一个),还是会导致1个事务(foo())?您将有3个单独的事务,因为EJB容器在bean方法开始时启动事务,在方法完成时结束事务(这是为自
@ManagedBean
@ViewScoped
public class View {
@EJB
private Bar bar
public void foo() {
bar.do();
bar.do();
bar.do();
}
}
这会导致3个单独的事务(每个
bar.do()
调用一个),还是会导致1个事务(foo()
)?您将有3个单独的事务,因为EJB容器在bean方法开始时启动事务,在方法完成时结束事务(这是为自动完成的,您可以手动完成)。如果您只想使用一个事务和多个EJB方法调用,那么请使用会话外观设计模式。使用CMT(容器管理事务)创建facae bean以调用其自身事务中的其他bean。
2.使用BMT(Bean管理的事务)