2014-11-02 61 views
1

我使用Weblogic的10.3.5和會話bean EJB 3從Java主類的Weblogic 10.3.5 EJB3當地SEESION bean查找

,但我無法查找本地無狀態會話bean的JNDI即使我能夠查找

遠程豆成功

我的代碼是主類是

Properties p = new Properties(); 
    p.put(Context.INITIAL_CONTEXT_FACTORY, 
      "weblogic.jndi.WLInitialContextFactory"); 
    p.put(Context.PROVIDER_URL, "t3://localhost:7001"); 

    try { 

     Context ctx = new InitialContext(p); 

     TheBeanRemote bean = (TheBeanRemote) ctx 
       .lookup("MrBean#com.bdc.TheBeanRemote"); 
     System.out.println(bean.sayHello()); 

     TheLocalLocal bean2 = (TheLocalLocal) ctx.lookup("TheLocalLocal"); 
     Object obj = ctx.lookup("java:comp/env/ejb/MrBean2"); 

     System.out.println(bean2.sayHello()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Remote Bean

import javax.ejb.Remote;

@Remote 公共接口TheBeanRemote {

public String sayHello(); 

}

本地豆

進口javax.ejb.Local;

@Local(TheLocalLocal.class) 公共接口TheLocalLocal {

public String sayHello(); 

}

回答

0

如果你正在運行的 「客戶端」,這是一個遠程調用,如果應用程序正在運行在服務器本身,這是一個本地通話。這是有道理的,一個有效,但不是另一個。

您正在使用的特性表明遠程調用

Properties p = new Properties(); 
p.put(Context.INITIAL_CONTEXT_FACTORY, 
     "weblogic.jndi.WLInitialContextFactory"); 
p.put(Context.PROVIDER_URL, "t3://localhost:7001"); 
Context ctx = new InitialContext(p); 

一個本地通話是:

Context context = new InitialContext(); 

看到類似的問題在這裏:How to lookup JNDI resources on WebLogic?

+0

謝謝回覆, 當我使用上下文對象而不傳遞屬性ies對象並嘗試訪問,如上面爲本地bean建議的那樣,那麼我得到以下內容 javax.naming.NoInitialContextException:需要在環境或系統屬性中,或作爲applet參數或在應用程序資源中指定類名file:java.naming.factory.initial 請讓我知道問題出在哪裏,因爲多日來我面臨同樣的問題 謝謝!!! – user432843 2014-11-04 13:42:39

+0

你能發佈完整的例外嗎? - 您可以編輯您的原始問題以添加更多信息。聽起來像它可能是類路徑問題 – 2014-11-04 15:31:24

+0

完全例外:: javax.naming.NoInitialContextException:需要在環境或系統屬性中,或作爲applet參數或應用程序資源文件中指定類名稱:java.naming。 factory.initial \t at javax.naming.spi.NamingManager.getInitialContext(NamingManager。的java:645) \t在javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) \t在javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325) \t在javax.naming.InitialContext.lookup(InitialContext的.java:392) \t at com.bdc.Main.main(Main.java:33) – user432843 2014-11-05 16:14:00