• 検索結果がありません。

TSC ノードとの接続

ドキュメント内 A908.book (ページ 33-37)

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の例外を,複数回クライアントアプリケー ションに返す場合があります。

ドキュメント内 A908.book (ページ 33-37)