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

1

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

        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-naming</artifactId>
            <version>4.1.1</version>
        </dependency>
于 2017-02-10T16:02:25.947 回答
0

JNDI 是一种用于访问命名和目录服务的 API。JNDI 教程可以让您快速了解 API 及其工作原理。

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

这可能不是您访问 JNDI 服务所需要的全部,但至少可以帮助您克服最初的错误。请参阅文章和JNDI 教程

于 2013-02-13T13:12:47.233 回答