7.7.2 トランザクションの利用
トランザクションを利用すると,メッセージの作成から処理の実行までを一連の処理としてまとめることができます。トランザクションに含まれるすべての操作は,クライアント側のアプリケーション(メッセージを送信したアプリケーション)がトランザクションをコミットしたときに完了します。
CJMSプロバイダでは,JTAトランザクションを利用できます。
JTAトランザクションは,アプリケーションサーバのトランザクション管理用API(JTA)によって管理されます。トランザクション内の操作が失敗した場合,アプリケーションサーバによって例外が処理され,トランザクション内の処理がリトライまたはロールバックされます。ローカルトランザクションの管理には,BMTまたはCMTを使用できます。BMTまたはCMTによるトランザクションの管理については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)」の「2.7 Enterprise Beanでのトランザクション管理」を参照してください。
- 注意事項
-
CJMSプロバイダでは,JTAトランザクションを利用する場合,コンテナがBeanの代わりにJMSセッションのトランザクションを管理します。このため,次のメソッドの引数「transacted」の値に「true」は指定しないでください。
-
createSession(boolean transacted, int acknowledgeMode)メソッド
-
createQueueSession(boolean transacted, int acknowledgeMode)メソッド
-
createTopicSession(boolean transacted, int acknowledgeMode)メソッド
「true」を指定した場合は,無視され,警告メッセージが出力されます。
なお,EJBアプリケーションを使用する場合,トランザクション内でJMSの承認メソッドを使用しないでください。承認メソッドを指定していないトランザクションコンテキスト内では,コンテナによってメッセージの承認が管理されます。
また,一つのトランザクション内で,大量のメッセージを送信すると,メッセージの配信確認に関する情報を管理しているファイルの容量が増え,ディスク容量を圧迫するおそれがあります。大量のメッセージを送信する場合,性能テストを実施して,必要なファイルサイズを見積もってください。
-