要與 WebLogic Server 互動,Java 用戶端必須能夠擷取某個遠程對象的對象引用,並能夠調用對該對象的操作。要完成此操作,用戶端應用程式代碼必須執行下列步驟:
1、設定 InitialContext的 JNDI 環境屬性。
清單 3-1 說明如何使用 Context.INITIAL_CONTEXT_FACTORY 屬性和 Context.PROVIDER_URL 屬性擷取上下文。
清單 3-1 擷取上下文
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
try {
ctx = new InitialContext(ht);
// 使用程式中的上下文
} catch (NamingException e) {
// 發生故障
} finally {
try {ctx.close();}
catch (Exception e) {
// 發生故障
}
}
2、從伺服器端對象建立上下文。
也可能需要從在 WebLogic伺服器的 JAVA 虛擬機器上執行個體化的對象(EJB)建立上下文。使用伺服器端對象時,不需要指定 Context.PROVIDER_URL 屬性。只有要以特定使用者登入時,才需要使用者名稱和密碼。
要從伺服器端對象建立上下文,首先必須建立一個 InitialContext,如下所示:
Context ctx = new InitialContext();不需要指定工廠或提供者 URL。預設情況下,上下文建立為Context 並串連到本地命名服務。
3、使用上下文尋找 WebLogic Server 名稱空間中的已命名物件。
try {
ServiceBean bean = (ServiceBean)ctx.lookup("ejb.serviceBean");
//傳遞到 lookup() 方法的參數是包含所需對象名稱的字串。
}catch (NameNotFoundException e) {
// 綁定不存在
}catch (NamingException e) {
// 發生故障
}
4、使用已命名物件來擷取遠程對象的引用,並調用對遠程對象的操作。
EJB 用戶端應用程式從 EJB Home 中擷取對 EJB 遠程對象的對象引用。
清單 3-4 包含擷取遠程對象、而後對該對象調用方法的程式碼片段。
ServiceBean bean = ServiceBean.Home.create("ejb.ServiceBean");
Servicebean.additem(66);
5、關閉上下文。
BEA 系統建議用戶端使用上下文完成工作後,應當關閉上下文,以釋放資源和避免記憶體流失。BEA 建議使用 finally{} 塊並封裝 try{} 塊中的 close() 方法。如果嘗試關閉一個因錯誤而從未執行個體化的上下文,則 Java 用戶端應用程式會引發異常。在清單 3-5 中,用戶端將關閉上下文,並釋放正在使用的資源。
清單 3-5 關閉上下文
try {
ctx.close();
} catch () {
//發生故障
}