无法从Swing客户端创建初始上下文

问题描述 投票:0回答:1

请参阅下面的代码:

try {
            //InitialContext ic = new InitialContext();
            Hashtable env = new Hashtable();
            env.put(Context.INITIAL_CONTEXT_FACTORY,  
             "com.sun.enterprise.naming.SerialInitContextFactory");
            Context ctx = new InitialContext(env);      

            MySessionRemote hb = (MySessionRemote) ctx.lookup("ejb.MySessionRemote");
            System.out.println(hb.getResult());
        } catch (NamingException ex) {
            ex.printStackTrace();
        }

我从Swing应用收到的错误是:(javax.naming.NoInitialContextException) javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]

我已经有一段时间没有使用Java了,所以这可能很简单。

java java-ee glassfish glassfish-4
1个回答
0
投票

您正在使用哪个应用程序服务器?例如。使用Glassfish时,可以在glassfish-naming.jar文件中找到该类。该JAR必须位于您的类路径中。我假设其他应用程序服务器具有类似的JAR文件。

实际上,当您在类路径中具有该JAR时,您可以简单地使用InitialContext的no-args构造函数,因为该JAR已经包含具有以下内容的jndi.properties文件:

java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory
java.naming.factory.url.pkgs=com.sun.enterprise.naming
# Required to add a javax.naming.spi.StateFactory for CosNaming that
# supports dynamic RMI-IIOP.
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
© www.soinside.com 2019 - 2024. All rights reserved.