3.4.11 JTAによるトランザクション実装時の注意事項
JTAを使用してトランザクションを実装したプログラムの処理の内容,および動作を次の表に示します。
処理の内容 |
動作 |
---|---|
|
クライアント側のトランザクションをロールバックにマークするかしないかは,プロパティ(ejbserver.distributedtx.rollbackClientTxOnSystemException)の設定で変わります。プロパティの設定値とその動作については,「3.4.5 システム例外発生時のトランザクションの動作」を参照してください。 |
トランザクションタイムアウト発生後に,javax.transaction.UserTransaction.commitメソッドを呼び出した場合 |
javax.transaction.RollbackException例外が発生します。ただし,トランザクションタイムアウトが発生したあと,2回以上UserTransaction.commitメソッドを呼び出すと,2回目以降はjava.lang.IllegalStateException例外が発生します。 |
トランザクションタイムアウト発生後にjavax.transaction.UserTransaction.rollbackメソッドを呼び出した場合 |
例外は発生しません。 |
トランザクションタイムアウト後のjavax.transaction.UserTransaction.getStatusメソッドの戻り値 |
javax.transaction.Status.STATUS_ROLLEDBACKが返されます。ただし,UserTransaction.commitメソッド,またはUserTransaction.rollbackメソッドを呼び出したあとは,javax.transaction.Status.STATUS_NO_TRANSACTIONが返されます。 |
javax.ejb.SessionSynchronizationを実装したEJBのbeforeCompletionメソッド,またはafterCompletionメソッドからのEJB呼び出し |
例外が発生することなく,呼び出すことができます。 |