Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


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

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

表3‒17 JTAの動作

処理の内容

動作

  • EJB呼び出しで,java.rmi.RemoteExceptionまたはjava.rmi.RemoteExceptionを継承した例外が発生した場合

  • CORBAのシステム例外が発生した場合

クライアント側のトランザクションをロールバックにマークするかしないかは,プロパティ(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呼び出し

例外が発生することなく,呼び出すことができます。