ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Java EE運用ガイド

3.7.1 IIOP接続の待機時間監視機能

IJServerクラスタ未起動やネットワーク異常でクライアントからRMI-IIOPによるサーバへの接続に失敗した場合、接続のリトライが行われます。この接続に失敗した場合のリトライ間隔などを指定し、クライアントにタイムアウトが通知される時間を制御できます。
本監視機能の設定は、クライアントのJava VMでJava VMオプション(システムプロパティ)として指定します。


プロパティ名:

com.sun.corba.ee.transport.ORBTCPConnectTimeouts

設定値:

設定構文    initial:max:backoff:maxsingle

項目

設定内容

値の範囲

initial

初期リトライ間隔(ミリ秒)。

1~2147483647

max

全体待ち時間超過判定値(ミリ秒)。
なお、コネクションの接続処理時間は含みません。

1~2147483647

backoff

バックオフ値(整数値)。
リトライごとに、リトライ間隔は(backoff+100)/100を掛けた値に増加します。例えば、20の場合は1.2倍、100の場合は2倍となります。
通常は、10~100の値を設定します。

1~2147483647

maxsingle

一回あたりの最大リトライ間隔(ミリ秒)。

1~2147483647

デフォルト値:

250:60000:100:5000

設定方法:
  • IJServerクラスタをクライアントとして使用する場合: Java VMオプションに設定します。

    -Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
  • アプリケーションクライアントコンテナの場合: VMARGS環境変数に設定します。

    set VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値

    VMARGS=-Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値
    export VMARGS
  • スタンドアロンクライアントの場合: Java VMオプションに設定します。

    -Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=設定値

以下の図に各リトライ間の待機時間と最大の待機時間を説明します。



RMI-IIOPによりEJBクライアントからIJServerクラスタに配備されているEnterprise Beanにアクセスしようとすると、サーバへコネクション接続が行われます。接続に失敗した場合、「initial」の時間を過ぎてからリトライします。
次のリトライまでの間隔は、リトライの回数と「backoff」の数値により長くなりますが「maxsingle」の間隔を超えません。リトライ間の待機時間の合計が「max」の全体待ち時間を過ぎていると次回のリトライが行われないため、タイムアウト時間になるまでコネクション接続が正常に完了していないと、クライアントへ例外を通知します。

例えば、initial:max:backoff:maxsingle=100:350:100:200で、コネクション接続のエラー検出まで50ミリ秒かかる場合は、以下の制御となります。

経過時間
(ミリ秒)

待ち時間の合計
(ミリ秒)

コネクション接続に関するリトライ動作

0

0

コネクション接続試行。

50

0

コネクション接続失敗を検出し、リトライ待ち(100ミリ秒)。

150

100

コネクション接続試行のリトライ。

200

100

コネクション接続失敗を検出し、リトライ待ち(200ミリ秒)。

400

300

コネクション接続試行のリトライ。

450

300

コネクション接続失敗を検出し、リトライ待ち(200ミリ秒)。

650

500

コネクション接続試行のリトライ。

700

500

コネクション接続失敗を検出し、待ち時間の合計がmaxを超過しているので、アプリケーションに例外を通知。


全体待ち時間を超過した後、クライアントへ以下の例外が通知されます。また、アプリケーションクライアントコンテナを使用する場合には、依存性の注入などを行うために起動時にコンテナがサーバに通信するため、以下の例外によりアプリケーションクライアントコンテナの起動に失敗します。この場合には、起動時のログに以下の例外情報が出力されているか確認してください。

javax.naming.CommunicationException: Can't find SerialContextProvider [Root exception is
 org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No]

注意

IJServerクラスタプロセス内の呼出しの場合は、RMI-IIOPが使用されませんので監視が行われません。