2012-07-23 30 views
1

在Java EE應用程序中,我編寫了一個佈局管理器類。從這個類中,有時我需要從EJB模塊訪問EJB Session。在嘗試從servlet中的獨立POJO類查找本地EJB會話時發現查找失敗錯誤

下面是代碼,這是生成的代碼:

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:全球/ CMS/CMS-EJB/MessagesFacade cms.model.beans.MessagesFacadeLocal'

in 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]

我不知道爲什麼我收到這個問題。如何解決這個問題呢?

回答

0

錯誤消息說「CMS」上下文無法找到,所以我猜你的應用程序名稱實際上不是「CMS」。 lookup(「java:app/AppName」)返回什麼?

如果您的EJB模塊在同一個應用程序中,您可以使用lookup(「java:app/CMS-ejb -/...」),無論如何您都可以更靈活地更改您的應用程序名稱。

+0

CMS實際上是應用程序名稱。CMS-war和CMS-ejb是應用程序中的兩個不同模塊。 – mrN 2012-07-23 15:40:00

+0

「CMS」是查找報告的應用程序名稱(「java:app/AppName」)? – 2012-07-23 22:38:43

+0

不,當我從Web模塊運行時,它返回'CMS-war'作爲appName。 – mrN 2012-07-24 00:31:16

相關問題