在执行查找时无法实例化类:com.sun.enterprise.naming.SerialInitContextFactory

时间:2013-02-12 21:00:46

标签: java java-ee jndi

我试图让这个独立的(没有服务器参与)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?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我正在使用Maven项目,我刚刚添加了以下依赖项:

        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-naming</artifactId>
            <version>4.1.1</version>
        </dependency>

答案 1 :(得分:0)

JNDI是一种访问命名和目录服务的API。有The JNDI Tutorial可以让您熟悉API以及它的工作原理。

作为API,JNDI需要实现才能工作。在您的特定情况下,您需要找到类com.sun.enterprise.naming.SerialInitContextFactory的jar。一旦你弄明白它应该是什么jar,你需要将它添加到CLASSPATH并重新运行应用程序。

可能不是您需要访问JNDI服务,但至少会让您超过初始错误。请参阅文章和The JNDI Tutorial