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

时间:2016-03-10 10:17:42

标签: jsf java-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())?

2 个答案:

答案 0 :(得分:2)

您将有3个单独的事务,因为EJB容器在bean方法的开头启动事务,并在方法完成时结束(这是Container Managed Transactions自动完成的,Bean Managed Transactions你手动执行此操作。)

答案 1 :(得分:0)

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