在J2EE文档中,它说,
虽然具有容器管理事务的bean需要更少 编码,它们有一个限制:当一个方法执行时,它可以 与单个交易或没有交易相关联 所有
问题1。但我理解的是,除非我们使用NotSupported或Never声明事务属性,当方法正在执行时(假设使用默认的必需属性),它保证了在a中运行的方法交易权?
此外,我需要知道假设容器管理器事务具有伪代码发生时的默认必需属性,
class bean1{
public void m1(){
bean2.m2();
}
}
class bean2{
public void m2(){
}
}
**问题2. **在这种情况下,bean2中的m2()是在新事务中运行还是在bean1中针对m1()的相同事务下运行?
答案 0 :(得分:0)
问题1.但我理解的是除非我们宣布交易 方法执行时,具有NotSupported或Never的属性 (假设默认为必需属性)其保证方法为 在交易中运行吗?
是的,容器管理的事务的默认值是必需的,如果不存在事务,它将启动事务。你引用的段落有些不同寻常(显然是否存在交易),所以我缺少上下文来提供更完整的解释。
问题2.在这种情况下,bean2中的m2()运行了一个新的 事务或在bean1中的m1()的同一事务下运行?
假设它们都是EJB并且没有应用其他事务属性(即,两个EJB方法都使用默认的Required属性),则两个方法都将使用相同的事务。所有事务属性的语义在TransactionAttributeType的javadoc中简洁地描述。