JNDIクライアントから InitialContext の取得を行った場合に発生するエラーと対処方法について説明します。
JNDIクライアントのクラスパスに wo-client.jar が含まれていない場合、 InitialContext 取得時に下記のような例外が出力されます。
javax.naming.NoInitialContextException: Need to specify class name in environmen t or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
エラーを解決するには、クライアントのクラスパスに wo-client.jar を追加してください。
ただし、JNI の AttachCurrentThread を使用してメソッド呼び出しを行っている場合は、上記の対処を行っても例外は解消されません。
この場合は、JNI仕様によりコンテキストクラスローダがブートストラップクラスローダになっていることが原因です。下記の例を参照し、 InitialContext を取得する前に、コンテキストクラスローダをシステムクラスローダに変更する処理を追加してください。
ClassLoader urlCl = ClassLoader.getSystemClassLoader(); Thread.currentThread().setContextClassLoader(urlCl); InitialContext l_ctx = new InitialContext(env);