EJB容器管理事务执行

时间:2015-04-25 05:58:58

标签: java java-ee transactions

在J2EE文档中,它说,

  

虽然具有容器管理事务的bean需要更少   编码,它们有一个限制:当一个方法执行时,它可以   与单个交易或没有交易相关联   所有

问题1。但我理解的是,除非我们使用NotSupported或Never声明事务属性,当方法正在执行时(假设使用默认的必需属性),它保证了在a中运行的方法交易权?

此外,我需要知道假设容器管理器事务具有伪代码发生时的默认必需属性,

class bean1{
 public void m1(){
    bean2.m2();
 }
}

class bean2{
 public void m2(){
 }
}

**问题2. **在这种情况下,bean2中的m2()是在新事务中运行还是在bean1中针对m1()的相同事务下运行?

1 个答案:

答案 0 :(得分:0)

  

问题1.但我理解的是除非我们宣布交易   方法执行时,具有NotSupported或Never的属性   (假设默认为必需属性)其保证方法为   在交易中运行吗?

是的,容器管理的事务的默认值是必需的,如果不存在事务,它将启动事务。你引用的段落有些不同寻常(显然是否存在交易),所以我缺少上下文来提供更完整的解释。

  

问题2.在这种情况下,bean2中的m2()运行了一个新的   事务或在bean1中的m1()的同一事务下运行?

假设它们都是EJB并且没有应用其他事务属性(即,两个EJB方法都使用默认的Required属性),则两个方法都将使用相同的事务。所有事务属性的语义在TransactionAttributeType的javadoc中简洁地描述。