Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


2.9.3 ネーミングサービスの障害検知機能の挙動

ネーミングサービスの障害検知機能の挙動について説明します。

〈この項の構成〉

(1) 閉塞のタイミング

ネーミングサービスの障害検知では,次のタイミングでネーミングサービスの状態を確認し,応答がなかった場合に閉塞します。

  1. sweepインターバル時間経過のタイミングに応答がなかった場合

  2. RMI/IIOP通信エラーなどを契機にキャッシュの領域がすべてクリアされたあとや,キャッシュがない状態で,次の操作を最初に実行した時にネーミングサービスの応答がなかった場合

    • InitilalContextを生成した時

    • lookupをした時

キャッシュをすべてクリアしたあとのネーミングサービスに対する操作の挙動について表で説明します。

表2‒37 キャッシュをすべてクリアしたあとのネーミングサービスに対する操作の挙動

ネーミング管理の機能での操作

ラウンドロビン検索を使用している場合

ラウンドロビン検索を使用していない場合

InitialContextを生成したとき

EJBクライアントプロセス起動後の初回InitialContext生成時に,ネーミングサービスの稼働確認で応答がない場合は,閉塞される。

初回以外の場合は,閉塞されない。

生死確認をして,ネーミングサービスからの応答が検知できない場合,閉塞される。

lookupしたとき

lookupの発行時に通信しようとしているネーミングサービスに対してだけ,状態確認をする。

応答が検知できない場合は,閉塞される。例えば三つのネーミングサービスでラウンドロビン検索をしている場合には,ダウンしたネーミングサービスが閉塞されるのは最大で3回目のlookup時になる。

生死確認をして,ネーミングサービスからの応答が検知できない場合,閉塞される。

ネーミングサービスの障害検知機能では,閉塞されると同時にKDJE47111-Iメッセージをログに出力します。メッセージが出力されたあとに,稼働中のネーミングサービスの機能に対する通信はすべて抑止されて,javax.naming.NamingExceptionをスローされます。

(2) 閉塞した場合の挙動

ネーミングサービスの障害検知機能によって閉塞されたネーミングサービスに対して,EJBクライアントからInitialContextの生成,またはlookupした場合のネーミングサービスの挙動について説明します。

閉塞したネーミングサービスに対する操作について,ラウンドロビン検索機能を使用しているか,使用していないかに分けて表で示します。

表2‒38 閉塞したネーミングサービスに対する操作

EJBクライアントからの操作

ラウンドロビン検索を使用している場合

ラウンドロビン検索を使用していない場合

InitialContextを生成したとき

ラウンドロビン用のInitialContextを返す。

常に通信を抑止する。

EJBクライアントにjavax.naming.NamingExceptionを返す。

lookupしたとき

ラウンドロビングループに登録されている,別のネーミングサービスからオブジェクトを検索して返す。

常に通信を抑止する。

EJBクライアントにjavax.naming.NamingExceptionを返す。

(3) ネーミングサービスの閉塞解除のタイミング

閉塞を解除するタイミングについて説明します。次に示すタイミングでネーミングサービスの状態確認をして,ネーミングサービスからの応答が検知できたときに閉塞を解除します。

閉塞を解除すると同時に,KDJE47110-Iメッセージをログに出力します。メッセージが出力されたあとは,稼働中のネーミングサービスに対する通信は抑止されません。