2010-08-04 43 views
2

我開發在Glassfish 3.應用程序我有一個看起來像這樣的EJB:找了一個EJB動態

@LocalBean 
@Stateless 
public class MyBean { 
    public void doSomething() {} 
} 

我的客戶端代碼(同一個應用程序內運行)看起來是這樣的:

MyBean mb = (MyBean) InitialContext.doLookup(MyBean.class.getName()); 

根據幾個來源,這應該是一個有效的查找方法,但它會引發NameNotFoundException。我究竟做錯了什麼?

回答

2

根據什麼來源?我會親自使用EJB 3.1中指定的可移植JNDI名稱。請參閱:

根據包裝上

  • What is the syntax for portable global JNDI names in EJB 3.1?,我會用一個模塊-scoped或應用程序範圍的JNDI名稱。

    順便說一下,GlassFish會在部署時記錄可移植的JNDI名稱。

  • +1

    我的來源:http://www.devx.com/tips/Tip/35010和http://www.roseindia.net/ejb/ejb-lookup.shtml。似乎他們都完全是狗屎。 – 2010-08-04 13:19:48

    +2

    @Mike在EJB 3.1之前,JNDI名稱沒有標準化,所以沒有通用規則,JNDI名稱是依賴於應用服務器的。 PS:我傾向於忽略roseindia和devx的「技術提示」,我不認爲它們是高質量的資源。 – 2010-08-04 14:01:59