2012-02-21 66 views
2
的NameNotFoundException

我使用EJB3,GlassFish的3.0.1和eclipse赫利俄斯的Ejb3 GlassFish的 - JNDI查找失敗SerialContext -

我有一個遠程EJB

@Stateless (mappedName="TestBean") 
public class TestBean implements TestBeanRemote { 
public int add(int a, int b){ 
return a+b; 
} 
} 

和遠程接口

@Remote 
public interface TestBeanRemote { 
    public int add(int a, int b); 
} 

的application.xml

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6"> 
    <application-name>ear.proj</application-name> 
    <display-name>ear.proj</display-name> 
    <module> 
    <web> 
     <web-uri>war.proj</web-uri> 
     <context-root>/war</context-root> 
    </web> 
    </module> 
    <module> 
    <ejb>ejb.proj.jar</ejb> 
    </module> 
</application> 

我有一個空的太陽ejb-jar.xml和我讀,它是可選的,因爲EJB3 我把我的EJB的EAR隨着WEB

我我沒有定義ejb-jar.xml中'M試圖調用這個EJB的POJO類

InitialContext ic = new InitialContext(); 
ic.lookup("java:global/ear.proj/ejb.proj/TestBean"); 

我得到下面的異常 javax.naming.NamingException中:查找失敗的java:全球/ ear.proj/ejb.proj/testBean就' 在SerialContext [根異常是javax.naming.NameNotFoundException:ear.proj]

我想問題是在EJB設置中我的耳朵,因爲它在每個便攜式全局JNDI名稱是在部署期間打印到server.log的,而我無法找到日誌

相反,我可以看到以下 信息在任何便攜關鍵字在GlassFish EJB常見問題解答說:在應用程序軟件包中找不到模塊ejb.proj.ejb.jar

有什麼我不見了?

+0

你能解釋更多關於Pojo類嗎?由於上面的代碼使用EJB3,是否有一個特別的原因是您沒有使用EJB3注入? @EJB TestBeanRemote TestBeanRemote; – 2012-02-22 21:01:16

回答

0

嘗試使用:

ic.lookup("java:global/*classesdirectory*/TestBean"); 

其中classesdirectory =包含在Eclipse項目樹類(TestBean.class)的目錄。

在NetBeans中,你可以嘗試

ic.lookup("java:global/classes/TestBean"); 

因爲編譯CLASSE(連包裝分裝AR)

1

確保如果要部署EJB項目,您在server.log中

收到通知
INFO: Portable JNDI names for EJB ${EJB_Name}: 
INFO: Glassfish-specific (Non-portable) JNDI names for EJB ${EJB_Name}: 

在那裏你會看到上下文路徑。

PS爲了看到這些日誌,根據配置的不同,您可能需要更改記錄器設置,甚至您將強制瀏覽服務器上的server.log文件。