java - 如何在有状态 session bean 上下文查找期间定义名称?

标签 java intellij-idea jakarta-ee ejb stateful

我正在设置一个有状态 session bean,并希望使用 context.lookup(name) 调用它,但不知道如何正确定义 name 变量。

我正在使用 Intellij,据我所知,与 NetBeans 相比,无法自动生成此路径。我已经尝试了多种方法,使用我为这个名称找到的指南: java:scope[/应用程序名称]/模块名称/bean 名称[!完全限定接口(interface)名称] 但是,我总是收到以下错误 javax.naming.NamingException:在 SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.state=com.sun] 中查找“RememberEJB”失败。 corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [根异常是 javax.naming.NameNotFoundException: RememberEJB 未找到]

下面是调用该函数的方法:

public Response getRememberedPost() {
    try {
        javax.naming.Context context = new InitialContext(); // Could also be InitialContext context = new InitialContext();
        RememberBean rememberBean = (RememberBean) context.lookup("RememberEJB");
        return Response.ok(rememberBean).build();
    }
    catch (NamingException e) {
        e.printStackTrace();
        return Response.noContent().build();
    }
}

我希望名称变量必须类似于“java:global/project-name/folder-for-beans/RememberEJB!src.Beans.RememberLocal”,但这仍然给出相同的错误。

最佳答案

您可以引用下面的Java EE tutorial :

使用无接口(interface) View 访问本地 Enterprise Bean
客户端对公开本地无接口(interface) View 的企业 Bean 的访问是通过依赖项注入(inject)或 JNDI 查找来完成的。

  • 获取对企业 Bean 的无接口(interface) View 的引用 通过依赖注入(inject),使用javax.ejb.EJB注释并 指定企业bean的实现类:

    @EJB    
    ExampleBean exampleBean;
    
  • 获取对企业 Bean 的无接口(interface) View 的引用 通过JNDI查找,使用javax.naming.InitialContext接口(interface)的 查找方法:

    ExampleBean exampleBean = (ExampleBean)InitialContext.lookup("java:module/ExampleBean");
    

所以在你的情况下:

    RememberBean rememberBean = (RememberBean)context.lookup("java:module/RememberEJB");

关于java - 如何在有状态 session bean 上下文查找期间定义名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56710365/

相关文章:

java - Java Servlet 的标准导入

java - 如何测试一个java软件?

java - 在 Jetty 中通过默认 servlet 提供静态资源

Java 获取 IPv4 地址

groovy - IntelliJ IDEA 中的 .story 文件没有语法突出显示

java - 在同一 EAR 中的 WAR 之间进行通信的选项

jakarta-ee - 如何防止用户在网站上多次发布数据

java - 如何更改包含已更改实例变量的实例变量

intellij-idea - 如何增加 IntelliJ 中的代码字体大小?

java - 如何在 Intellij IDEA 中使用 gradle run?