Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

9.17.5 JTAによるトランザクション実装時の注意事項

JTAを使用してトランザクションを実装したプログラムの処理の内容,および動作を次の表に示します。

表9-49 JTAの動作

処理の内容 動作

  • EJB呼び出しで,java.rmi.RemoteExceptionまたはjava.rmi.RemoteExceptionを継承した例外が発生した場合
  • CORBAのシステム例外が発生した場合
クライアント側のトランザクションをロールバックにマークするかしないかは,プロパティ(ejbserver.distributedtx.rollbackClientTxOnSystemException)の設定で変わります。プロパティの設定値とその動作については,「9.3.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呼び出し 例外が発生することなく,呼び出すことができます。