在 JSF 管理的 Bean 中调用多个 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 方法的开头启动事务,并在方法完成时结束事务(对于容器管理事务,这是自动完成的,对于 Bean 管理事务,您可以手动执行此操作)。

如果只想使用 1 个事务和多个 EJB 方法调用,则 1.,使用会话外观设计模式。使用 CMT(容器管理事务)创建一个 facae bean,以在其自己的事务中调用其他 bean。2.,使用 BMT(Bean 管理事务)

最新更新