XMS アプリケーションは、ローカル・トランザクションを実行できます。ローカル・トランザクションは、アプリケーションの接続先になっているキュー・マネージャーまたはサービス統合バスのリソースに対してのみ変更を加えることが関係するトランザクションです。
このトピックに含まれる情報は、アプリケーションが WebSphere MQ キュー・マネージャーまたは WebSphere サービス統合バスに接続する場合にのみ該当します。この情報は、ブローカーへのリアルタイム接続の場合は該当しません。
ローカル・トランザクションを実行するには、まず、セッションが処理されたことをパラメーターとして指定して Connection オブジェクトの Create Session メソッドを呼び出すことにより、アプリケーションで処理済みセッションを作成する必要があります。その後、そのセッション内で送受信されたすべてのメッセージは、トランザクションの順序でグループ化されます。トランザクションは、トランザクションの開始後に送受信されたメッセージを、アプリケーションがコミットまたはロールバックすると終了します。
トランザクションをコミットするため、アプリケーションは Session オブジェクトの Commit メソッドを呼び出します。トランザクションがコミットされると、そのトランザクション内に送信されたすべてのメッセージは、他のアプリケーションに配信できるようになります。また、そのトランザクション内に受信したすべてのメッセージが認知されるので、メッセージング・サーバーはそれらのメッセージをアプリケーションへ再配信しなくなります。Point-to-Point ドメインの場合、メッセージング・サーバーは、受信したメッセージをサーバーのキューから除去する処理も行います。
トランザクションをロールバックするため、アプリケーションは Session オブジェクトの Rollback メソッドを呼び出します。トランザクションがロールバックされると、そのトランザクション内に送信されたすべてのメッセージはメッセージング・サーバーによって破棄されます。また、そのトランザクション内に受信したすべてのメッセージは再配信できるようになります。Point-to-Point ドメインでは、受信したメッセージがキューにプットバックされ、再び他のアプリケーションからも可視になります。
新規トランザクションは、アプリケーションが処理済みセッションを作成するか、Commit または Rollback メソッドを呼び出すと、自動的に開始します。したがって、処理済みセッションはいつでもアクティブなトランザクションとなります。
アプリケーションが処理済みセッションを閉じると、暗黙のロールバックが発生します。アプリケーションが接続を閉じると、その接続の処理済みセッションすべてで暗黙のロールバックが発生します。
1 つのトランザクションは、1 つの処理済みセッション内に完全に含まれています。1 つのトランザクションが複数のセッションをまたぐことはできません。つまり、アプリケーションが複数の処理済みセッションでメッセージを送受信し、これらすべてのアクションを単一のトランザクションとしてコミットまたはロールバックすることはできません。