2 機能
2.1 クライアントアプリケーションの機能
2.1.2 TSC ノードとの接続
クライアントアプリケーションは,サーバアプリケーションのTSCユーザオブジェクト にリクエストするためにTSCノードと接続します。このとき,クライアントアプリケー ションをTSCデーモンおよびTSCレギュレータと同じホストに配置する必要はありま せん。
TSCノードとの接続では,接続経路,接続方法,および接続するTSCノードを指定でき ます。
(1) 接続経路の指定
クライアントアプリケーションからTSCノードに接続するときに,リクエストの経路を 指定できます。指定方法には,TSCAdmクラスおよびTSCDomainクラスからプログラ ム上で実行する方法,クライアントアプリケーションのコマンドオプション引数で運用 時に実行する方法,または両者を組み合わせる方法があります。
●TSCデーモンに直結する方法
TSCレギュレータを経由しないで,クライアントアプリケーションとTSCデーモン を直結する方法です。オーバヘッドが少ない接続経路です。
●TSCレギュレータを経由してTSCデーモンに接続する方法
クライアントアプリケーションからTSCデーモンに接続するときに,TSCレギュ レータを経由する方法です。オーバヘッドが発生しますが,コネクションを集約して TSCデーモンの資源を分散することによって,システムを安定して動作させます。
TSCレギュレータの詳細については,「2.3 TSCレギュレータの機能」を参照してく ださい。
(2) 接続方法の指定
接続先情報ファイルで,TSCノードへの接続を確立する方法を指定できます。接続先情 報ファイルを使用しない場合は,TPBrokerのスマートエージェントを使用した接続が選 択されます。接続先情報ファイルについては,「2.2 接続先情報ファイルを使用する接 続」を参照してください。
●TPBrokerのスマートエージェントの使用
通常は,TPBrokerのスマートエージェント(osagent)を使用して接続を確立しま す。
●IOR文字列の使用
IOR文字列を使用して接続を確立します。IOR文字列を使用する接続では,
TPBrokerのスマートエージェント(osagent)を使用しないため,問い合わせ処理が
不要です。さらに,ORBドメインを意識しないため,複数のORBドメインにわたっ た接続もできます。したがって,多数のクライアントアプリケーションから同時に接 続要求があるときに,osagentおよびTSCデーモンの負荷を軽減させ,コネクション
なお,TSCレギュレータを経由する接続でIOR文字列を使用する場合は,TSCレ ギュレータの開始時に,tscregltdコマンドの-TSCIORConnectオプションを指定す る必要があります。
(3) 接続する TSC ノードの指定
TSCノードの動作するコンピュータの能力と負荷を考慮して,接続するTSCノードを指 定できます。次に示す3とおりの指定方法があります。
● クライアントアプリケーションでTSCドメイン名称とTSC識別子を指定する場合,
ユーザの指定したTSCノードが選択されます。
● クライアントアプリケーションでTSCドメイン名称だけを指定する場合,TSCドメ イン内の任意のTSCノードが選択されます。
● 接続先情報ファイルによって指定する場合,接続先情報ファイル中の情報に従って,
一つ以上のTSCノードが選択されます。接続の対象となるための条件については,
「2.2.4 マルチノードリトライ接続の接続対象」を参照してください。
2.1.3 TSC ノードとのリバインド
TSCノード(TSCデーモンまたはTSCレギュレータ)との接続が障害などによって切 断された場合,クライアントアプリケーションからメソッドを呼び出すと例外が返りま す。その場合に再度メソッドを呼び出すには,クライアントアプリケーションで getTSCClient()メソッドを発行してTSCノードに接続してからTSCユーザプロキシを 生成するなどの複雑な処理が必要です。
このような場合には,オートリバインド機能を使用することで,TSCノードに自動的に リバインドできます。クライアントアプリケーションは,例外が発生する前に生成して いたTSCユーザプロキシを使用して,再度,メソッドを呼び出せます。
(1) オートリバインド機能の設定
オートリバインド機能を使用する場合は,クライアントアプリケーションの開始時に -TSCRebindTimesオプションにリバインド回数を指定し,-TSCRebindIntervalオプ ションにリバインド間隔を秒単位で指定します。
オートリバインド機能は,次の表に示す例外が発生したときに動作します。
表2-1 オートリバインド機能が動作する例外(TSCデーモンへ直結するクライアント アプリケーションの場合)
内容コード 完了状態 例外通知
SEND_CLNT_FAILURE COMPLETED_NO ×
COMPLETED_MAYBE 〇
表2-2 オートリバインド機能が動作する例外(TSCレギュレータを経由するクライア ントアプリケーションの場合)
(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。
×:例外が発生しないで,自動的にリバインドします。
-TSCTimeOutRebindオプションを指定すると,次の表に示すタイムアウト例外が発生
した場合にもオートリバインド機能が動作します。
表2-3 -TSCTimeOutRebindオプション指定時にオートリバインド機能が動作する例外
(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。
-TSCTimeOutRebindオプションを指定すると,サーバのハード障害やネットワーク障
害などの,TCP/IPですぐに検知できない障害が発生した場合に,オートリバインド機能 を動作させることができます。ただし,サーバアプリケーションからの応答が監視時間 を超えた場合にもオートリバインド機能が動作するので,注意が必要です。
これらの例外が発生した場合には,コネクション切断などの障害時ではなくても,オー トリバインド機能が動作します。
さらに,オートリバインド機能の動作の有無は,接続元とその接続対象によっても異な ります。各接続でオートリバインド機能が動作するかどうかを次の表に示します。
表2-4 各接続でのオートリバインド機能の動作の有無
CALL_IN_END COMPLETED_NO ×
RECEIVE_CONN_DOWN COMPLETED_NO ×
内容コード 完了状態 例外通知
SEND_THIN_CLNT_FAILURE COMPLETED_NO ×
COMPLETED_MAYBE 〇
CALL_IN_END COMPLETED_NO ×
内容コード 完了状態 例外通知
TIMED_OUT COMPLETED_MAYBE ○
接続元 接続対象 動作の有無
クライアントアプリケーション TSCデーモン ○
クライアントアプリケーション TSCレギュレータ ○
TSC TSC
内容コード 完了状態 例外通知
(凡例)
○:オートリバインド機能が動作します。
×:オートリバインド機能は動作しません。
注※
TSCデーモンはリクエストを受信後,目的のTSCユーザオブジェクトがあるほかの TSCデーモンにリクエストを振り分けます。したがって,ほかのTSCデーモンにリ クエストを転送するときにオートリバインド機能に対応する例外が発生しても,リ バインドしません。それは,クライアントアプリケーションとTSCノードとの接続 は確立されているためです。この場合は,オートリバインド機能に対応する例外が そのままメソッド呼び出しの例外として,クライアントアプリケーションに返され ます。
このとき,クライアントアプリケーションは,例外が発生する前に生成していた TSCユーザプロキシを使用して,再度,メソッドを呼び出せます。
(2) 注意事項
オートリバインド機能を使用する場合の注意事項を次に示します。
●-TSCRebindTimesオプションに指定したリバインド回数が超過しても,再度メソッ
ドを呼び出せば,リバインドできます。
● マルチスレッド環境下で複数のメソッドを同時に呼び出す場合,メソッドの呼び出し ごとにリバインドできます。
● メソッド呼び出しの時間監視は,次に示す時間(秒)だけ長くなることがあります。
(リバインド回数−1)×(リバインド間隔)
● リバインドするときに使用するTSCノードの情報は,TSCユーザプロキシに関連す
るTSCDomainクラスから取得されます。そのため,TSCDomainクラスを生成する
ときに一つの引数を取るコンストラクタを使用した場合で,リバインド前に
getTSCDomain()メソッドまたはgetTSCID()メソッドで取得した情報を使用すると きは,必要なTSCノードの情報がリバインド後に変更されることがあります。この場 合は,リバインド後にgetTSCDomain()メソッドまたはgetTSCID()メソッドを再発 行して,情報を取得し直してください。
● 接続先情報ファイルに複数の接続対象を指定した場合,リバインド回数1回ごとに,
すべての接続対象に対して接続を実行します。詳細については,「2.2.6 接続および 再接続の実行」を参照してください。
● 複数のスレッドがメソッドを呼び出す場合,内容コードがSEND_CLNT_ FAILURE
サーバアプリケーション TSCデーモン ×
TSCデーモン※ TSCデーモン ×
接続元 接続対象 動作の有無
で,完了状態がCOMPLETED_MAYBEの例外を,複数回クライアントアプリケー ションに返す場合があります。