2010-11-24 1 views

答えて

4

finallyブロックのコミットは、トランザクションステータスがSTATUS_ACTIVE(コミットもロールバックもされていない)の場合にのみ呼び出されます。メソッドtryのブロックでutx.commit()が忘れられた場合に、トランザクションがメソッドの最後にロールバックまたはコミットされるようにするセキュリティのように見えます。

+0

感謝:?uが私は試してみるとUTX中でutx.commitを持っているとして、finallyブロック内のコードをスキップすることができますコミット後にロールバックした後transcationの状態になるとどうなるか教えてくださいすることができますキャッチ? – Sanket

+0

これはjavadocに文書化されています。http://download.oracle.com/javaee/6/api/javax/transaction/Status.html – Guillaume

+0

私はその文書に「トランザクションはターゲットオブジェクトに関連付けられています。トランザクションがロールバックされていない限り、トランザクションが開始された後、コーディネータが何らかの準備を行う前に、このステータスを返します。 "コミット後に転記の状態が何も得られません。 – Sanket

1

私はfinallyブロックでそのようなコミットを行うのは良い方法ではないと言います。ほとんどの目的のために危険な半面作業を行う危険性があります。ロールバックは、トランザクションの状態をACTIVEにした後に、より良いオプションになります。

HTH。

おかげで、 ニティン

関連する問題