【问题标题】:Stateful sessions Beans CMT有状态会话 Beans CMT
【发布时间】:2023-03-10 06:16:01
【问题描述】:

在我的时区下午好。

我正在准备 EJB 3.0 认证考试,并且正在阅读“EJB3 In Action”一书。 在使用 BMT 事务类型的优点和缺点部分中,它说“如果您使用有状态会话 bean 并且需要跨方法调用维护事务,BMT 将是我们唯一的选择”。我无法理解这句话。想象一下,我们有以下 psedo 类

 @Stateful
    @TransactionManagement(TransactionManagementType.CONTAINER)
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public class TestBean implements Test{
        public void method1(...){...}
        public void method2(...){...}
        public void method2(...){
           method1();
           method2();

    }
}  

因为它在类级别定义了所有方法都将具有 REQUIRED transactionAttribute 值,所以当 method3 调用 method1 和 method2 时,这些方法将加入调用 method3 时创建的事务,对吗? 可以澄清我的疑问吗? 提前致谢 最好的问候

【问题讨论】:

    标签: jakarta-ee transactions ejb-3.0 stateful-session-bean


    【解决方案1】:

    “跨方法调用维护事务” - 是指从客户端到您的 bean 的不同方法调用,而不是跨 bean 中的调用。

    默认情况下,在会话 bean 中,每个方法调用都会创建单独的事务,该事务必须以方法的结尾结束(除非已在提供的事务中调用)。

    在有状态会话 bean 中,您可以在一个方法中启动事务,然后您的客户端可以调用几个方法(仍然参与同一个事务),最后您调用方法来提交或回滚事务(如签出或取消) . 但是要能够像这样手动管理事务,您需要 BMT。

    我希望它现在更清楚一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2012-02-01
      • 2013-06-15
      • 1970-01-01
      相关资源
      最近更新 更多