【问题标题】:Calling multiple EJB methods in JSF managed bean, do each run in same or separate transaction?在 JSF 托管 bean 中调用多个 EJB 方法,每个方法是在同一个事务中运行还是在单独的事务中运行?
【发布时间】:2016-03-10 10:17:42
【问题描述】:

我有以下托管 bean:

@ManagedBean
@ViewScoped
public class View {
  @EJB
  private Bar bar

  public void foo() {
     bar.do();
     bar.do();
     bar.do();
  }
}

这会导致 3 个单一事务(每个 bar.do() 调用一个)还是会导致 1 个事务 (foo())?

【问题讨论】:

    标签: jsf jakarta-ee transactions ejb managed-bean


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-05
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多