1

このスタンドアロン (サーバーが関与しない) JNDI InitialContext ルックアップを機能させようとしています。この例外が発生しています:

クラスをインスタンス化できません: com.sun.enterprise.naming.SerialInitContextFactory

try {  
    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");  
    env.put("java:comp/env/jms/RNCQueueConnectionFactory", 
            "javax.jms.QueueConnectionFactory");  
    env.put("Big", "Data");  
    Context jndiContext = new InitialContext(env);  
    jndiContext.lookup("java:comp/env/jms/RNCQueueConnectionFactory");  
    testval = (String) jndiContext.lookup("Big");
} catch (NamingException ne) {  
    System.out.println(ne.getMessage());  
}  

私にとって、そして私が読んだことから、おそらくコンテキストを正しく設定していませんでした。スタンドアロン JNDI のセットアップに成功した人はいますか?

4

2 に答える 2

0

JNDI は、ネーミング サービスとディレクトリ サービスにアクセスするための API です。API とその仕組みについて理解を深めるための JNDI チュートリアルがあります。

API として、JNDI が機能するには実装が必要です。特定のケースでは、クラスでjarを見つける必要がありますcom.sun.enterprise.naming.SerialInitContextFactory。必要な jar を特定したら、それを追加してCLASSPATHアプリケーションを再実行する必要があります。

JNDI サービスにアクセスするために必要なすべてではないかもしれませんが、少なくとも最初のエラーを回避することができます。記事とJNDI チュートリアルを参照してください。

于 2013-02-13T13:12:47.233 に答える