Posted on 2006-04-30 09:28
兵臨城下 閱讀(1216)
評論(1) 編輯 收藏 所屬分類:
Java EE
筆者使用的應用服務器從Weblogic到現在的WebSphere,在EJB的調用問題上始終存在的一點疑慮,今天說出來和大家探討一下。
在遠程調用EJB時,有一個初始化環境的問題,有以下兩種代碼:
一、Context ctx = new InitialContext();
二、String initialFactory = "com.ibm.websphere.naming.WsnInitialContextFactory";
??? String initialURL = "iiop://localhost:2809";
??? Hashtable env = new Hashtable();
??? env.put(Context.PROVIDER_URL, initialURL);
??? env.put(Context.INITIAL_CONTEXT_FACTORY,initialFactory);
??? Context ctx = new InitialContext(env);
???????筆者也看了很多這方面的書,大多數書中都是按照第一種的寫法,大概都這樣論述,說EJB已經在容器中初始化,所以只需調用默認的初始化環境即可,但是卻都不介紹怎么在容器中初始化這些信息。根據筆者的使用經驗,不設置容器的情況下(其實筆者也不知道怎么設置)使用第一種方法都提示不能初始化上下文。
筆者現在都使用第二種硬編碼的方式,現在想請教大家,如果想設置EJB的容器,利用第一種方法,那該怎么設置呢?畢竟每次調用時都按第二種方法很麻煩。
還有一個就是JNDI的書寫問題有兩種:(比如筆者創建的EJB名為HelloEntity)一種是ejb/HelloEntity,還有一種是java:comp/env/ejb/HelloEntity
請問java:comp/env怎么設置,在哪個配置文件中設置?筆者在WebSphere的配置文件ibm-ejb-jar-bnd.xmi中設置了java:comp/env,可在使用時還是報錯,說找不到java這個初始化上下文,不懂,請指教該怎么設置?