今日、私はこの例外を提示されました
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException]
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
... 23 more
ejb にリモートでアクセスしようとしましたが、問題のコードは
Context c = new InitialContext();
以前にこの例外を見て修正したことがありますが、どのように行ったかを正確に思い出せませんでした。初期、コンテキスト URL、サービス プロバイダーなどにいくつかの環境変数を設定する必要があることはわかっていました。
実際、前回この問題を修正するために使用したコードを見つけることができました。それは次のとおりです。
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context c = new InitialContext(env);
私の質問は、使用する初期コンテキスト ファクトリをどのように見つけることができるかということです。私は、glassfish v3 で実行されるデータベース用の ejb モジュールを作成しましたが、もちろん を使用する必要があるというヒントはまったく得られませんでしたcom.sun.enterprise.naming.SerialInitContextFactory
。これらのコンテキスト ファクトリを作成するのは誰ですか? どちらを使用する必要があるかを誰が決定し、その理由は? さまざまな目的でどれが必要かを示すリストがないのはなぜですか? 誰かが、人間が可能なリソースにアクセスするための最も難解で不可解な方法を作るために道を踏み外したようです。または、ここで何かを完全に誤解しているか、膨大な量の知識が不足しています。
この件についての啓蒙をいただければ幸いです。
皆さん、ありがとうございました。