ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express Java EE運用ガイド(Java EE 6編)
FUJITSU Software

2.25.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

バックオフ値(整数値)を設定します。通常は、10~100の値を設定します。
リトライ間隔は、リトライごとに(backoff+100)/100を掛けた値に増加します。

backoffが20の場合、リトライ間隔は1.2倍、backoffが100の場合、リトライ間隔は2倍となります。

1~2147483647

maxsingle

一回あたりの最大リトライ間隔(ミリ秒)を設定します。

1~2147483647

デフォルト値:
250:60000:100:5000
設定方法:

maxの判定時にコネクションの接続処理時間を含めない場合の処理を以下の図に示します。



  1. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(1)の時間待機します。

  2. 接続をリトライします。

  3. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(2)の時間待機します。

  4. 接続をリトライします。

  5. 保持する接続先リストA, B, Cのすべてに接続を試みた後、(3)の時間待機します。

  6. 接続リトライから待機までを繰り返します。

注意

  • (1)、(2)、(3)の時間はリトライの回数と「backoff」の数値により長くなりますが、「maxsingle」の間隔を超えません。

  • 全体待ち時間[max]の超過判定は、接続先リストの最後の接続(C)が失敗するたびに行われます。

  • 接続処理中や待機処理中に全体待ち時間[max]を超過した場合でも、クライアントにタイムアウトが通知されるのは接続リストの最後の接続が失敗した直後となり、設定値との間に誤差が生じます。

以下の場合の動作例を示します。

  • 接続先が複数(接続先A、接続先B、接続先C)である。

  • プロパティの設定が「initial:max:backoff:maxsingle=100:250:100:200」である。

  • コネクション接続のエラー検出まで50ミリ秒かかる。

    経過時間
    (ミリ秒)

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

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

    0

    0

    コネクション接続試行(接続先A)。

    50

    0

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行(接続先B)。

    100

    0

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行(接続先C)。

    150

    0

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

    250

    100

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

    300

    100

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行のリトライ(接続先B)。

    350

    100

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行のリトライ(接続先C)。

    400

    100

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

    600

    300

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

    650

    300

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行のリトライ(接続先B)。

    700

    300

    コネクション接続失敗を検出し、次の接続先へコネクション接続試行のリトライ(接続先C)。

    750

    300

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


全体待ち時間[max]の超過を検知した後、クライアントに以下の例外を内包する例外が通知されます。

org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No

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

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が使用されませんので監視が行われません。