2014-07-16 59 views
1
I have problem in configuring JNDI lookup for ejb3.1 and weblogic 12c, jdk1.6 

@Remote 
public interface Bank{ 

    public String accounts(); 

} 

@Stateless(name="BankSession") 
public class BankSessionBean implements Bank{ 

    @Override 
    public String accounts() { 
       //////// } 

ejb-jar.xml: 

    <enterprise-beans> 
     <session> 
      <display-name>BankSession</display-name> 
      <ejb-name>BankSession</ejb-name> 
      <business-remote>com.examples.Bank</business-remote> 
      <ejb-class>com.examples.BankSessionBean</ejb-class> 
      <session-type>Stateless</session-type> 
      <transaction-type>Bean</transaction-type> 
     </session> 
    <enterprise-beans> 

weblogic-ejb-jar.xml: 

<weblogic-enterprise-bean> 
    <ejb-name>BankSession</ejb-name>  
    <jndi-name>BankSession</jndi-name> 
    </weblogic-enterprise-bean> 


client code: 

當我開始使用JNDI查找使用此語法 的java:comp/env的/ EJB/BankSessionEJB 3.1中,WebLogic 12c中,Java 1.6的JNDI查找問題

它給予以下錯誤。

javax.naming.NameNotFoundException:嘗試查找'java:comp/env/ejb/BankSession'時未找到子上下文。

這裏ejbbean和客戶端代碼運行在不同的jvm上。

我應該用哪個Jndi?

  1. 的java:comp/env的/ EJB/BankSession」
  2. 的java:全球/的applicationName/MODULENAME/BankSession
  3. 的java:模塊/ BankSession
  4. 的java:應用程序/模塊名/ BankSession

java:comp/env/ejb/BankSession在ejb 3.0和oc4j服務器上工作正常。

當我遷移到ejb3.1和weblogic 12c時,它不起作用。

我甚至嘗試過不使用weblogic部署xml文件。遇到同樣的問題。

我應該如何在這裏配置我的Jndi?請幫忙,因爲我長期以來面臨這個問題。

回答

1

對於java:comp/env/...形式的查找,您需要在執行查找的組件的部署描述符中使用EJB引用! java:comp/env/...總是與執行查找的組件相關。

的查找名稱無關,做查找的實際分量,並從你的應用程序中任何位置的工作原理是:4的java:應用程序/模塊名/ ...

的java:全球/ APPNAME/..如果你決定在一天內重新命名你的ear文件,將會失敗。 java:module/...僅適用於屬於同一模塊的組件內部。 所以4.是IMO最好的選擇。

+0

在哪個部署描述符中,我需要爲java添加ejb ref:comp/env /?我已經在application-client.xml文件中有ejb ref。 \t EJB/BankInquirySession 會話 com.examples.Bank BankInquirySession \t user3791049

+0

什麼模塊/組件是你的bean的客戶端(ejb,servlet,java客戶端)?您需要添加對該模塊/組件的引用。 Application-client.xml是用於密集Java客戶端的描述符,所以它可能是錯誤的。 – Gas

+0

好的。我重讀了你從應用程序客戶端執行的查詢。如果您從應用程序客戶端java:app/...執行查找可能無效。然後,我建議將ejb-ref ejb/BankInquirySession解析爲BankInquirySession並查找java:comp/env/BankInquirySession。 –