当一个EJB的(事务性)方法调用另一个EJB的(事务性)方法,并且第二个方法中抛出异常,但在第一个方法中被捕获时,似乎当第二个方法返回时事务会自动回滚,即使第一个方法捕获了它,这是真的吗?如何避免这种情况?
场景如下:
@Stateless
class ClassA {
@EJB
ClassB objectB;
methodA() {
try {
objectB.methodB();
}
catch(Exception e) {
//Here the transaction started in this method is
//automatically rolled back. Is this avoidable?
}
}
}
@Stateless
class ClassB {
methodB() throws Exception { throw new Exception() }
}