尝试从servlet中的独立POJO类查找本地EJB会话时,查找失败错误

时间:2012-07-23 12:22:18

标签: java-ee ejb lookup session-bean

在Java EE应用程序中,我编写了一个布局管理器类。从这个类中,有时我需要从EJB模块访问EJB Session。

这是代码,这是生成的代码:

private MessagesFacadeLocal lookupMessagesFacadeLocal() {
    try {
        Context c = new InitialContext();
        return (MessagesFacadeLocal) c.lookup("java:global/CMS/CMS-ejb/MessagesFacade!cms.model.beans.MessagesFacadeLocal");
    } catch (NamingException ne) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
        throw new RuntimeException(ne);
    }
}

但是,在尝试使用它时,我收到错误

  

java.lang.RuntimeException:javax.naming.NamingException:

     

'java:global / CMS / CMS-ejb / MessagesFacade!cms.model.beans.MessagesFacadeLocal'

查找失败      在SerialContext中的

[myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,   java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,   java.naming.factory.url.pkgs = com.sun.enterprise.naming} [根异常是javax.naming.NameNotFoundException:CMS]

我不知道为什么我会遇到这个问题。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

错误消息显示无法找到“CMS”上下文,因此我猜您的应用程序名称实际上并不是“CMS”。 lookup(“java:app / AppName”)返回什么?

如果您的EJB模块位于同一个应用程序中,您可以使用lookup(“java:app / CMS-ejb - / ...”),这样您可以更灵活地更改应用程序名称。