セッションには、オプションでトランザクションとして指定できます。 トランザクションセッションで作成されるメッセージコンシューマおよびプロデューサには、特別な確認モードがあります。ここでは、メッセージは、セッションのコミットおよびロールバックメソッドを使用して確認する必要があります。 現在のトランザクションは常に存在します。つまり、メッセージのセットがコミットまたはロールバックされるとすぐに、セッションは自動的に新しいトランザクションを開始します。 セッショントランザクションは、セッション以外の他のリソースでは対応できないという意味でローカルです。
各トランザクションセッションは、1つの一連のトランザクションをサポートします。 トランザクションは、生成されるメッセージのセットおよび消費されるメッセージのセットを1つの最小作業単位にまとめます。 つまり、トランザクションは、セッションの入力メッセージストリームおよび出力メッセージストリームを一連の最小単位に編成します。 トランザクションがコミットされると、その入力の最小単位は、確認され、関連する出力の最小単位が送信されます。 トランザクションがロールバックされると、その生成されたメッセージは削除され、消費されるメッセージは自動的に回復されます。
トランザクションセッションを概念的に説明すると、セッションのメッセージプロデューサにより送信されたメッセージ、およびセッションのメッセージコンシューマにより実行されたメッセージ確認が入った「バケツ」です。 送信されたメッセージおよびメッセージ確認は、プロデューサおよびコンシューマの作業時にこのバケツに入れられます。 セッションがコミットされると、このバケツ全体(最小作業単位)が、JMSサーバに送信され、セッションが「実現」されます。 ロールバックされると、バケツのメッセージは削除され、確認メッセージが回復されます。
このサンプルプログラムは、トランザクションセッションの使用方法を示します。
このサンプルプログラムは、リビジョン1.1のJMS仕様で導入されたドメイン統一を示しています。