[英]Using InitialContext for lookups on Liberty
我正在將 Ear 應用程序從 WebSphere 8.5 遷移到 WebSphere Liberty。
有 2 個 EJB 應用程序 A 和 B 部署在不同的系統上。
在代碼中,每當 B 必須與 A 交談時,步驟是
a) 創建 InitialContext 並傳遞 A 的 EJB URL
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, url);
InitialContext ic = new InitialContext(env)
b) 使用這個 InitialContext 然后進行 JNDI 查找
要將此代碼遷移到 Liberty,我需要將 EJB 接口的所有 JNDI 查找替換為 java 命名空間。
遷移工具還建議使用默認 InitialContext 並且不要在 Liberty 上傳遞 INITIAL_CONTEXT_FACTORY 和 PROVIDER_URL
InitialContext context = new InitialContext();
我的問題是,在 A 和 B 位於遠程系統上的上述場景中,如果有自由,這將如何工作? 我們不需要提供 EJB Url 嗎?
另一個相關問題是此更改是否向后兼容 Websphere 8.5
在 Liberty 上, java:
名稱空間查找僅在查找同一服務器進程中的 bean 時可用。 要在服務器進程之間查找 bean,您必須使用corbaname
查找,其中corbaname
將包括目標服務器的主機和 IP 地址。 可以在此處找到有關此內容的詳細信息:
此外,可以在 open-liberty 源測試項目中找到一個示例,該項目顯式測試了在進程之間查找遠程 EJB 的不同方式:
該測試的實際 servlet(在兩台服務器之一上運行)可以在這里找到:
測試使用localhost
因為兩台服務器都在同一個系統上,所以如果它們在不同的系統上,則需要更換。
至於使用 WebSphere 傳統 8.5 的可移植性,答案是否定的。 WebSphere 傳統版和 Liberty 都支持在java:
查找位於同一服務器進程中的 bean 的名稱空間的遠程接口,但是在進程之間查找 EJB 的行為不兼容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.