Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 有状态会话bean CMT_Jakarta Ee_Transactions_Ejb 3.0_Stateful Session Bean - Fatal编程技术网

Jakarta ee 有状态会话bean CMT

Jakarta ee 有状态会话bean CMT,jakarta-ee,transactions,ejb-3.0,stateful-session-bean,Jakarta Ee,Transactions,Ejb 3.0,Stateful Session Bean,下午好,在我的时区 我正在准备EJB3.0认证考试,我正在阅读“EJB3实际应用”一书。 在使用BMT事务类型的优缺点部分,它说“如果您使用的是有状态会话bean,并且需要跨方法调用维护事务,那么BMT将是我们唯一的选择”。我听不懂这句话。假设我们有下面的psedo类 @Stateful @TransactionManagement(TransactionManagementType.CONTAINER) @TransactionAttribute(TransactionAtt

下午好,在我的时区

我正在准备EJB3.0认证考试,我正在阅读“EJB3实际应用”一书。 在使用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();

    }
}  
因为它在类级别定义了所有方法都将具有所需的transactionAttribute值,所以当method3调用method1和method2时,这些方法将加入调用method3时创建的事务,对吗? 你能澄清我的疑问吗? 提前谢谢 “跨方法调用维护事务”是指从客户端到bean的不同方法调用,而不是跨bean中的调用

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

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

我希望现在更清楚一点