ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

12.9 JNDI開発・運用時の異常

JDBCリソースをlookupした際に指定したJDBCリソースではなくDerbyPoolを参照するJDBCリソースがlookupされる

JDBCリソースをlookupした際に指定したJDBCリソースではなくDerbyPoolを参照するJDBCリソースがlookupされる場合、以下の可能性が考えられます。

JNDIを利用するクライアントアプリケーション実行時に無応答となる

JNDIを利用するクライアントアプリケーション実行時に無応答となり、かつ接続先GlassFish ServerクラスターのIIOPアクセスログにLOCATION_FORWARDのログが連続して出力されている場合、以下の可能性が考えられます。

IPCOMを利用したIIOP通信の負荷分散機能を使用している場合、EJBをlookupした際にjavax.naming.NameNotFoundExceptionが発生する

以下の条件を満たしている場合、EJBをlookupした際にIIOP通信に失敗してjavax.naming.NameNotFoundExceptionが発生することがあります。

  1. IPCOMを利用したIIOP通信の負荷分散機能を使用して、複数台のサーバーへとIIOP通信の振り分けを行っている場合。かつ、

  2. IPCOMのIIOP負荷分散の設定が、メソッド呼び出し単位の負荷分散を行わないように設定されている場合。かつ、

  3. IIOP通信クライアントの無通信監視機能の設定値がIPCOMのTCPコネクションの無通信監視時間より長い場合。かつ、

  4. 以下のa.とb.を満たした状態で、IPCOMを経由するIIOP通信を行った場合。

    1. 前回のIIOP通信を行ってからIPCOMのTCPコネクションの無通信監視時間を超過している場合。かつ、

    2. 前回のIIOP通信を行ってからIIOP通信クライアントの無通信監視機能の設定値を超過していない場合。

GlassFish ServerインスタンスとIPCOM間のIIOP通信のコネクションはIPCOMのTCPコネクションの無通信監視時間を経過した場合、IPCOMのサーバー負荷分散で使用するコネクションテーブルから解放されます。この状態でクライアント側のGlassFish Serverインスタンスから次のIIOP通信を行おうとした場合、IPCOMは新規にコネクションテーブルを作成します。その際、この通信を新規のコネクションとして新たに分散先を決定するため、前回と異なる振り分け対象のサーバーに振り分けられた場合、そのサーバーは該当のコネクション情報を持っていないため、IIOP通信に失敗します。その時、アプリケーションにはjavax.naming.NameNotFoundExceptionが通知されます。

クライアント側のGlassFish Serverインスタンスから次のIIOP通信を行おうとした際に、前回のIIOP通信を行ってからIIOP通信クライアントの無通信監視機能の設定値を超過していた場合、現在のコネクションを切断後、再接続します。その場合、新規コネクションを作成するため、IPCOMで振り分けられた先のサーバーとのIIOP通信は成功します。

そのため、IIOP通信クライアントの無通信監視機能の設定値は、IPCOMのTCPコネクションの無通信監視時間よりも短い時間に設定してください。IIOP通信クライアントの無通信監視機能については「2.24.4 IIOP通信クライアントの無通信監視機能」を参照してください。