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

标签 java jakarta-ee glassfish glassfish-4

请参阅下面的代码:

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("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 [根异常是 java.lang。 ClassNotFoundException:com.sun.enterprise.naming.SerialInitContextFactory]

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

更新

我正在使用 Glassfish 4.1 版本。我在 NetBeans 项目中添加了对以下 jar 的引用:

appserv-rt.jar
gf-client.jar
javaee.jar

我现在可以获得一个InitialContext。但是,我无法查找该 bean,即此行失败:

MySessionRemote hb = (MySessionRemote) ctx.lookup("ejb.MySessionRemote");

异常是 NamingException,即 Lookup Failed。我相信 bean 的名字可能是错误的。这是 bean :

封装ejb;

import javax.annotation.Resource;
import javax.ejb.Remote;
@Resource(name = "MySessionRemote")
@Remote
public interface MySessionRemote {
    public String getResult();
}

bean 的名称应该是什么?

最佳答案

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

事实上,当您的类路径上有该 JAR 时,您可以简单地使用 InitialContext 的无参数构造函数,因为 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

关于java - 无法从 Swing 客户端创建初始上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58437371/

相关文章:

java - 访问用作缓存的HashMap

java - hibernate 事件检测器

java - Oracle 驱动程序内存泄漏 - Tomcat

java - 如何在 JPQL 中创建 "findByDate"NamedQuery?

java - 如何在 Eclipse 中添加第二个 Glassfish 域

java - 根据 keystore 验证 CSR

java - 如何在单击的单个按钮上调用 Activity ?

java - 我们什么时候使用静态和动态类加载?

java - 如何保存程序中的更改?

hibernate - 执行此操作需要事务(使用事务或扩展持久性上下文)