2.1.3 TSCノードとのリバインド

TSCノード(TSCデーモンまたはTSCレギュレータ)との接続が障害などによって切断された場合,クライアントアプリケーションからメソッドを呼び出すと例外が返ります。その場合に再度メソッドを呼び出すには,クライアントアプリケーションでgetTSCClient()メソッドを発行してTSCノードに接続してからTSCユーザプロキシを生成するなどの複雑な処理が必要です。

このような場合には,オートリバインド機能を使用することで,TSCノードに自動的にリバインドできます。クライアントアプリケーションは,例外が発生する前に生成していたTSCユーザプロキシを使用して,再度,メソッドを呼び出せます。

<この項の構成>
(1) オートリバインド機能の設定
(2) 注意事項

(1) オートリバインド機能の設定

オートリバインド機能を使用する場合は,クライアントアプリケーションの開始時に-TSCRebindTimesオプションにリバインド回数を指定し,-TSCRebindIntervalオプションにリバインド間隔を秒単位で指定します。

オートリバインド機能は,次の表に示す例外が発生したときに動作します。

表2-1 オートリバインド機能が動作する例外(TSCデーモンへ直結するクライアントアプリケーションの場合)

内容コード完了状態例外通知
SEND_CLNT_FAILURECOMPLETED_NO×
COMPLETED_MAYBE
CALL_IN_ENDCOMPLETED_NO×
RECEIVE_CONN_DOWNCOMPLETED_NO×

表2-2 オートリバインド機能が動作する例外(TSCレギュレータを経由するクライアントアプリケーションの場合)

内容コード完了状態例外通知
SEND_THIN_CLNT_FAILURECOMPLETED_NO×
COMPLETED_MAYBE
CALL_IN_ENDCOMPLETED_NO×
(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。
×:例外が発生しないで,自動的にリバインドします。

-TSCTimeOutRebindオプションを指定すると,次の表に示すタイムアウト例外が発生した場合にもオートリバインド機能が動作します。

表2-3 -TSCTimeOutRebindオプション指定時にオートリバインド機能が動作する例外

内容コード完了状態例外通知
TIMED_OUTCOMPLETED_MAYBE
(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。

-TSCTimeOutRebindオプションを指定すると,サーバのハード障害やネットワーク障害などの,TCP/IPですぐに検知できない障害が発生した場合に,オートリバインド機能を動作させることができます。ただし,サーバアプリケーションからの応答が監視時間を超えた場合にもオートリバインド機能が動作するので,注意が必要です。

これらの例外が発生した場合には,コネクション切断などの障害時ではなくても,オートリバインド機能が動作します。

さらに,オートリバインド機能の動作の有無は,接続元とその接続対象によっても異なります。各接続でオートリバインド機能が動作するかどうかを次の表に示します。

表2-4 各接続でのオートリバインド機能の動作の有無

接続元接続対象動作の有無
クライアントアプリケーションTSCデーモン
クライアントアプリケーションTSCレギュレータ
TSCレギュレータTSCデーモン×
サーバアプリケーションTSCデーモン×
TSCデーモンTSCデーモン×
(凡例)
○:オートリバインド機能が動作します。
×:オートリバインド機能は動作しません。
注※
TSCデーモンはリクエストを受信後,目的のTSCユーザオブジェクトがあるほかのTSCデーモンにリクエストを振り分けます。したがって,ほかのTSCデーモンにリクエストを転送するときにオートリバインド機能に対応する例外が発生しても,リバインドしません。それは,クライアントアプリケーションとTSCノードとの接続は確立されているためです。この場合は,オートリバインド機能に対応する例外がそのままメソッド呼び出しの例外として,クライアントアプリケーションに返されます。
このとき,クライアントアプリケーションは,例外が発生する前に生成していたTSCユーザプロキシを使用して,再度,メソッドを呼び出せます。

(2) 注意事項

オートリバインド機能を使用する場合の注意事項を次に示します。