私は、グローバルトランザクションに関わるEJBを持っています。 失敗した場合、トランザクション全体が失敗することは望ましくありませんが、明示的にロールバックしたいというコードの一部があります。ロールバックがCMTで禁じられていたよう分散トランザクションにおける正当なロールバック:可能ですか?
は私がBMTを作成し、次のコードを試してみました:私はちょうど私の地元デシベルの変更を元に戻すが、私はまた、これが外部に失敗し伝播しない
connection.setAutoCommit(false);
Savepoint sp= connection.setSavepoint();
try{
//my code editing DB that could possibly fail
}catch(SomeException ex){
connection.rollback(sp);
}
この道を。とにかく、このプログラムでは、のようにして失敗します。
「セーブポイントが分散トランザクションに禁止されている」この問題を解決するための別のアプローチがありますか?
新しいトランザクションは、それが動作すればコミットします。新しいトランザクションは最初のトランザクションとは独立していることに注意してください。何かが最初のトランザクションをロールバックすると(別の理由で)新しいピースがコミットされます。 – kaczyns