Hitachi

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


4.9.4 トランザクショナルRPCの受信と応答

OpenTP1のSUPがトランザクション処理中にRPC通信をすると,RPC通信先はトランザクションブランチとしてOpenTP1のグローバルトランザクションに参加します。この場合のRPC通信をトランザクショナルRPCと呼びます。

TP1インバウンドアダプタがトランザクショナルRPCを受信して,OpenTP1へ応答を送信するまでの流れを次の図に示します。

図4‒16 トランザクショナルRPCの受信と応答

[図データ]

  1. OpenTP1のアプリケーションプログラムがTP1インバウンドアダプタに対してトランザクショナルRPCを送信します。

    TP1インバウンドアダプタでは,コネクション管理機能がOpenTP1からの電文を検知して,RPC通信機能のリクエスト受け付けスレッドが電文を受信します。詳細は,「4.6.2 コネクション接続要求の受信」を参照してください。

  2. RPC通信機能のリクエスト受け付けスレッドは,受信した電文がトランザクショナルRPCの場合,OpenTP1とトランザクション連携が可能な設定になっているかどうか(アプリケーションサーバのライトトランザクション機能が無効になっているか)を判定します。なお,受信した電文がトランザクショナルRPCでなければ判定しません。

    OpenTP1とトランザクション連携が可能な設定については,「4.9.3 グローバルトランザクションへのMessage-driven Bean(サービス)の参加条件」を参照してください。

    OpenTP1とトランザクション連携が可能な設定と判定した場合,リクエスト受け付けスレッドは,トランザクション識別子を生成し,RPC要求に関連づけて,そのRPC要求をスケジュール機能のスケジュールキューに登録します。スケジュール機能の詳細は,「4.8 スケジュール機能」を参照してください。

  3. スケジュール機能のMessage-driven Bean(サービス)実行制御スレッドは,スケジュールキューからRPC要求を取り出し,そのRPC要求に関連づいたトランザクション識別子をトランザクションマネージャに登録します。トランザクションマネージャは,登録されたトランザクション識別子をアプリケーションサーバのトランザクション識別子とマッピングします。これによって,アプリケーションサーバのトランザクションが開始します。

  4. Message-driven Bean(サービス)実行制御スレッドは,Message-driven Bean(サービス)呼び出しスレッドにRPC要求の処理を委譲します。Message-driven Bean(サービス)呼び出しスレッドはMessage-driven Bean(サービス)を実行します。

  5. Message-driven Bean(サービス)が,データベースなどのリソースを更新します。

  6. Message-driven Bean(サービス)呼び出しスレッドは,2.で生成したトランザクション識別子をRPC応答に含めてOpenTP1に送信します。この際,送信に使用するコネクションはRPC送信コネクションになります。

  7. TP1インバウンドアダプタからRPC応答を受信したOpenTP1は,RPC応答に含まれているトランザクション識別子をトランザクションブランチの識別子として管理し,その後の同期点処理のトランザクション識別子として使用します。