3.4.8 UserTransactionインタフェースを使用する場合の処理概要と留意点
UserTransactionインタフェースを使用すれば,ユーザプログラムからトランザクションマネージャに対して,トランザクションの開始,決着の指示を出すことができます。ユーザプログラムで,トランザクションの細かい制御をしたい場合には,この方法を使用します。
ユーザプログラムからトランザクションマネージャに対して,トランザクションの開始,決着を指示する手順を示します。
-
UserTransactionオブジェクトを取得します。
UserTransactionオブジェクトを取得するには,次の方法があります。
-
ネーミングサービスからJNDIを使用して"java:comp/UserTransaction"をルックアップする方法
-
EJBContextインタフェースのgetUserTransactionメソッドを呼び出して取得する方法
-
DIを使用して取得する方法
-
-
UserTransactionオブジェクトのbeginメソッドを呼び出して,トランザクションを開始します。
-
リソースにアクセスします。
-
UserTransactionオブジェクトのcommitメソッドまたはrollbackメソッドを呼び出して,トランザクションを決着します。
UserTransactionインタフェースを使用する場合のシーケンスを示します。
UserTransactionインタフェースを使用する場合,次の点に留意して実装してください。
-
UserTransactionインタフェースを使用する場合,DDの<transaction-type>タグにBeanを指定します。また,DDを使用しないで,アノテーションで定義することもできます。アノテーションについては,マニュアル「アプリケーションサーバ リファレンス API編」の「2. アプリケーションサーバで使用するアノテーションおよびDependency Injection」を参照してください。
-
トランザクションを開始後にリソースにアクセスした場合には,そのリソースアクセスは自動的にトランザクション管理されます。
-
トランザクション開始後に複数のリソースへアクセスする場合は,グローバルトランザクションに対応したリソースアダプタを使用し,リソースアダプタのトランザクションサポートレベルをXATransactionに設定する必要があります。
-
Enterprise Bean,サーブレット,およびJSPで使用できます。
-
UserTransactionインタフェースを使用して,ユーザプログラムで開始したトランザクションは,例外などが発生した場合にも,ユーザプログラムでcommitまたはrollbackを発行して決着させる必要があります。決着させなかった場合,リソースのロックが解放されない,または次のトランザクションが開始できないなどの問題が発生するおそれがあります。