2.9.3 ネーミングサービスの障害検知機能の挙動
ネーミングサービスの障害検知機能の挙動について説明します。
(1) 閉塞のタイミング
ネーミングサービスの障害検知では,次のタイミングでネーミングサービスの状態を確認し,応答がなかった場合に閉塞します。
-
sweepインターバル時間経過のタイミングに応答がなかった場合
-
RMI/IIOP通信エラーなどを契機にキャッシュの領域がすべてクリアされたあとや,キャッシュがない状態で,次の操作を最初に実行した時にネーミングサービスの応答がなかった場合
-
InitilalContextを生成した時
-
lookupをした時
-
キャッシュをすべてクリアしたあとのネーミングサービスに対する操作の挙動について表で説明します。
ネーミング管理の機能での操作 |
ラウンドロビン検索を使用している場合 |
ラウンドロビン検索を使用していない場合 |
---|---|---|
InitialContextを生成したとき |
EJBクライアントプロセス起動後の初回InitialContext生成時に,ネーミングサービスの稼働確認で応答がない場合は,閉塞される。 初回以外の場合は,閉塞されない。 |
生死確認をして,ネーミングサービスからの応答が検知できない場合,閉塞される。 |
lookupしたとき |
lookupの発行時に通信しようとしているネーミングサービスに対してだけ,状態確認をする。 応答が検知できない場合は,閉塞される。例えば三つのネーミングサービスでラウンドロビン検索をしている場合には,ダウンしたネーミングサービスが閉塞されるのは最大で3回目のlookup時になる。 |
生死確認をして,ネーミングサービスからの応答が検知できない場合,閉塞される。 |
(2) 閉塞した場合の挙動
ネーミングサービスの障害検知機能によって閉塞されたネーミングサービスに対して,EJBクライアントからInitialContextの生成,またはlookupした場合のネーミングサービスの挙動について説明します。
閉塞したネーミングサービスに対する操作について,ラウンドロビン検索機能を使用しているか,使用していないかに分けて表で示します。
EJBクライアントからの操作 |
ラウンドロビン検索を使用している場合 |
ラウンドロビン検索を使用していない場合 |
---|---|---|
InitialContextを生成したとき |
ラウンドロビン用のInitialContextを返す。 |
常に通信を抑止する。 EJBクライアントにjavax.naming.NamingExceptionを返す。 |
lookupしたとき |
ラウンドロビングループに登録されている,別のネーミングサービスからオブジェクトを検索して返す。 |
常に通信を抑止する。 EJBクライアントにjavax.naming.NamingExceptionを返す。 |
(3) ネーミングサービスの閉塞解除のタイミング
閉塞を解除するタイミングについて説明します。次に示すタイミングでネーミングサービスの状態確認をして,ネーミングサービスからの応答が検知できたときに閉塞を解除します。
-
sweepインターバル時間経過のタイミング
閉塞を解除すると同時に,KDJE47110-Iメッセージをログに出力します。メッセージが出力されたあとは,稼働中のネーミングサービスに対する通信は抑止されません。