2.7.5 リクエストの振り分け
(1) TSCアクセプタ名称を指定しないリクエストの振り分け
TSCアクセプタ名称を指定しない場合のリクエストの振り分けを次の図に示します。
図2-20 TSCアクセプタ名称を指定しない場合のリクエストの振り分け
![[図データ]](figure/zu022100.gif)
- 注※1
- Aのインタフェースを持つインスタンスに対する1回目のリクエストです。
- 注※2
- Aのインタフェースを持つインスタンスに対する2回目のリクエストです。
TSCユーザプロキシは,クライアントアプリケーションがTSCユーザオブジェクトを呼び出すための代理オブジェクトです。
使用するTSCユーザプロキシは,1回目,2回目とも同じオブジェクトを使用します。1回目のリクエストでは,スレッド3上で動作するインスタンスを実行してクライアントアプリケーションへ返します。続いてAのインタフェースに対して2回目のリクエストが実行された場合,スレッド2が実行されます。つまり,同じインタフェースに対してリクエストした場合でも,同じスレッド上で動作するという保証はありません。また,同じインタフェースを持つほかのサーバアプリケーションプロセスがある場合,複数のリクエストをすると,OTMの負荷状況に応じて処理するサーバアプリケーションプロセスが振り分けられます。そのため,リクエストを処理するサーバアプリケーションプロセスおよびスレッドが常に同じになるという保証はありません。
(2) TSCアクセプタ名称を指定するリクエストの振り分け
TSCユーザアクセプタの生成時にTSCアクセプタ名称を指定できます。同じインタフェースでもTSCアクセプタ名称を使用することによって,異なるインタフェースとして扱うことができます。
TSCアクセプタ名称を指定する場合のリクエストの振り分けを次の図に示します。
図2-21 TSCアクセプタ名称を指定する場合のリクエストの振り分け
![[図データ]](figure/zu022200.gif)
この例では,サーバアプリケーションプロセス1にあるAのインタフェースを担当するTSCアクセプタ名称を"Z"とし,サーバアプリケーションプロセス2にあるAのインタフェースを担当するTSCユーザアクセプタの名称はないものとします。
- 1.で示す処理では,クライアントアプリケーションからAのインタフェースのTSCアクセプタ名称Zでリクエストするとき,サーバアプリケーションプロセス1内のAのインタフェースを担当するTSCアクセプタ名称Zに対してリクエストします。TSCアクセプタ名称を指定する場合,名称がないTSCユーザアクセプタ,およびTSCアクセプタ名称が異なるTSCユーザアクセプタにはリクエストは振り分けられません。
この場合でもリクエスト単位に実行されるインタフェースについて,毎回同じTSCユーザオブジェクトが実行される保証はありません。
- 2.で示す処理では,クライアントアプリケーションからAのインタフェースでTSCアクセプタ名称を指定しないでリクエストするとき,リクエストが処理されるサーバアプリケーションプロセス,TSCユーザアクセプタ,およびスレッドが常に同じになるという保証はありません。したがって,名称があるTSCユーザアクセプタが呼び出されることがあります。
- サーバアプリケーションプロセス1およびサーバアプリケーションプロセス2に同じTSCアクセプタ名称があるBのインタフェースの場合,複数のリクエストをするときに,リクエストを処理するサーバアプリケーションプロセスおよびスレッドが常に同じになるという保証はありません。
(3) セション呼び出し時のリクエストの振り分け
セション呼び出し機能を使用する場合のリクエストの振り分けを次の図に示します。
図2-22 セション呼び出し機能を使用する場合のリクエストの振り分け
![[図データ]](figure/zu022001.gif)
- Aのインタフェースを持つインスタンスのセション呼び出し開始要求。
- Aのインタフェースを持つインスタンスに対するリクエスト。
クライアントアプリケーション1のすべてのリクエストを同じインスタンスに送信します。
- Aのインタフェースを持つインスタンスのセション呼び出し終了要求。
- Cのインタフェースを持つインスタンスのセション呼び出し開始要求。
- Cのインタフェースを持つインスタンスに対するリクエスト。
クライアントアプリケーション2のすべてのリクエストを同じインスタンスに送信します。
- Cのインタフェースを持つインスタンスのセション呼び出し終了要求。
- 注※
- セション呼び出し用プロキシを継承したTSCユーザプロキシです。