在JSF托管bean中调用多个EJB方法,每个方法是在同一个事务中运行还是在单独的事务中运行?

在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方法开始时启动事务,在方法完成时结束事务(这是为自

我有以下托管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管理的事务)