我有一个方法Meth1,女巫将从另一个类中调用Meth2。 我希望如果Meth1失败,则不执行Meth2。
两者均具有REQUIRED属性。 使用此代码,如果Meth1持续存在失败(成功执行Meth2之后),则Meth2的更改将保留。
我希望所有代码全部或全部作为一个整体执行。
例如:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
void meth1(){
// ...some code
otherClass.meth2();
// ... some persistance that may fail
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
void meth2(){
// some persistance
}
谢谢!
答案 0 :(得分:1)
在这种情况下,这两种方法将在同一事务中执行。
EJB规范3.0讲述了REQUIRED:
容器必须调用其事务处理的企业bean方法 有效交易将属性设置为REQUIRED值 上下文。
如果客户端调用企业Bean的方法,而 客户端与事务上下文相关联,容器调用 客户事务上下文中的企业bean的方法。
如果 客户端调用企业bean的方法时 与交易上下文无关的容器 在将方法调用委派给 企业bean业务方法。容器自动注册 使用该业务方法访问的所有资源管理器 交易。如果业务方法调用其他企业Bean, 容器通过调用传递事务上下文。的 容器尝试使用业务方法提交事务时 已经完成。容器在 方法结果发送给客户端。