EJBの(トランザクション)メソッドが別のEJBの別の(トランザクション)メソッドを呼び出すときに、例外が2番目のEJBにスローされますが、最初のトランザクションにキャッチされると、 2番目のものが戻るときにロールバックされます。最初のものがキャッチしても、これは本当ですか?どうすればそれを避けることができますか?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() }
}
私の悪い、申し訳ありませんが、チェックされた例外がスローされていることに注意するために、このシナリオでもトランザクションがロールバックされていますか? – edutesoy
いいえ、例外が確認済みの例外である場合は、ロールバックしないでください。 –
例外がチェックされていることがわかっている場合は、トランザクションをロールバックするかどうかを指定することはできません。 '@ApplicationException(rollback = true)'の場合、トランザクションをロールバックする可能性があります。 –