java - EJB - 查找 'ejb/BookRequestBean' 失败

标签 java jakarta-ee ejb ejb-3.0 glassfish-3

我是 EJB 的新手,正在尝试“Hello World”类型的 EJB Java 程序。这是我的 EJB:

package dukesbookstore.ejb;
@Stateless(name="BookRequestBean", mappedName="ejb/BookRequestBean")
@Named
public class BookRequestBean {
    //Other codes here
}

这是我的客户:

    Properties prop = new Properties();
    prop.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    prop.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
    prop.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
    try {
        InitialContext ctx = new InitialContext(prop);                              
        ctx.lookup("ejb/BookRequestBean");
        System.out.println("EJB Look-up successfull!!");
    } catch (NamingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但是每当我尝试运行时,我都会遇到以下异常:

javax.naming.NamingException: Lookup failed for 'ejb/BookRequestBean' in SerialContext[myEnv={org.omg.CORBA.ORBInitialPort=3700, java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, org.omg.CORBA.ORBInitialHost=localhost, java

我已经添加了 appserv-rt.jar , gf-client.jar, javaee.jar ,但仍然没有成功。谁能帮助我,我在这里缺少什么?我使用的是 Glassfish 3.1

最佳答案

这可能有几个原因:

1) 您的 EJB 未映射到 JNDI 名称。您需要检查您的 EJB 是否已成功部署并且是否映射到 JNDI 名称。您可以检查 Server GUIServer Log on startup 或使用 Universal Test Client 查看 EJB 是否正确映射.请注意,UTC 将仅显示远程公开 EJB。

2) 您的EJB 仅向本地 应用程序公开。在这种情况下,对 EJB远程调用跨应用程序调用(不同的 EAR、WAR...)将失败。在这种情况下,创建远程接口(interface) 并将其公开。 本地接口(interface) 仅将 EJB 公开给本地调用。 远程接口(interface) 将 EJB 公开给远程跨应用程序调用

3) 您的 RMI/IIOP port 可能不正确。您可以检查 Glassfish GUIServer startup log 以查看 port RMI/IIOP 分配给了什么。

注意:要诊断确切的问题,请发布完整的堆栈跟踪。

关于java - EJB - 查找 'ejb/BookRequestBean' 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16481198/

相关文章:

java - 将实例字段分配给局部变量

java - jsp页面显示特殊字符

java - UsbDevice requestPermission 被拒绝,且未显示请求对话框提示

java - Ubuntu NO-GUI 上 JDBC 连接器的 Jmeter 错误

java - 尝试获取根命名上下文时出现 org.omg.CORBA.OBJECT_NOT_EXIST "NameService"

java - J2EE和J2SE项目的区别

java.rmi.RemoteException : EJB Exception: ; nested exception is:

java - 将 Resource 标记放在 conf/context.xml 中会出现异常,但是当我将其放在 META-INF/context.xml 中时没问题 : Why is that?

java - 如何以编程方式启动/停止 EJB

ssl - 如何通过 ssl 在 ejb 中获取远程接口(interface)