在J2EE文档中写着,
尽管具有容器管理事务的bean需要较少的编码,但它们有一个限制:当一个方法正在执行时,它可以与单个事务相关联,也可以与根本没有事务相关联。
问题1.,但我理解的是,除非我们用NotSupported声明事务属性,否则当方法正在执行时(假设使用默认的必需属性),它保证了在事务中运行的方法,对吗?
此外,我还需要知道,假设容器管理器事务在伪代码下面出现了默认的必需属性,
class bean1{
public void m1(){
bean2.m2();
}
}
class bean2{
public void m2(){
}
}**问题2.**在本例中,m2()在bean2中是在新事务中运行还是在bean1中的m1()在同一事务下运行?
发布于 2015-04-25 23:21:59
问题1.但我所理解的是,除非我们用NotSupported声明事务属性,否则当方法正在执行时(假设使用默认的必需属性),它保证了在事务中运行的方法,对吗?
是的,容器管理事务的默认设置是必需的,如果事务不存在,它将启动事务。您引用的段落有些不寻常(显然要么存在一个事务,要么不存在),所以我缺少上下文来给出更完整的解释。
问题2.在这种情况下,m2()在bean2中是在一个新的事务中运行,还是在bean1中的m1()在相同的事务下运行?
假设它们都是EJB,并且没有应用其他事务属性(即,两个EJB方法都使用默认的必需属性),那么这两个方法将使用相同的事务。所有事务属性的语义都在TransactionAttributeType的javadoc中进行了简洁的描述。
https://stackoverflow.com/questions/29861589
复制相似问题