トランザクショナル分散オブジェクト基盤 TPBroker Object Transaction Monitor ユーザーズガイド

[目次][索引][前へ][次へ]

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

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

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

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

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

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

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

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

内容コード 完了状態 例外通知
SEND_CLNT_FAILURE COMPLETED_NO ×
COMPLETED_MAYBE
CALL_IN_END COMPLETED_NO ×

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

内容コード 完了状態 例外通知
SEND_THIN_CLNT_FAILURE COMPLETED_NO ×
COMPLETED_MAYBE
CALL_IN_END COMPLETED_NO ×

(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。
×:例外が発生しないで,自動的にリバインドします。

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

表2-3 オートリバインド機能が動作する例外(-TSCTimeOutRebindオプションを指定した場合)

内容コード 完了状態 例外通知
TIMED_OUT COMPLETED_MAYBE

(凡例)
〇:例外を受け取ったあと,リクエストを再送してリバインドします。

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

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

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

接続元 接続対象 動作の有無
クライアントアプリケーション TSCデーモン
クライアントアプリケーション TSCレギュレータ
TSCレギュレータ TSCデーモン ×
サーバアプリケーション TSCデーモン ×
TSCデーモン TSCデーモン ×

(凡例)
○:オートリバインド機能が動作します。
×:オートリバインド機能は動作しません。

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

(2) 注意事項

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