有状态会话Beans CMT

时间:2014-06-02 15:18:32

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

我的时区下午好。

我正准备参加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时创建的事务,对吗? 可以在这个疑问中澄清我吗? 提前致谢 最好的问候

1 个答案:

答案 0 :(得分:0)

"跨方法调用保持交易" - 指的是从客户端到bean的不同方法调用,而不是调用你的bean中的调用。

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

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

我希望现在更清楚一点。

相关问题