[英]EJB Bindings for WebSphere Liberty
我正在將 Ear 應用程序從 WebSphere 8.5 遷移到自由。
作為更改的一部分,我用 java 命名空間替換了 JNDI 綁定(在查找中)
例如
ejb/abc/cde/TestHome
ejblocal:ejb/qwe/ret/AbcHome
替換為類似於的 java 命名空間
java:global/my-ear-app-name/my-ejb-module-name/MyEjbBean!my.package.name.MyEjbLocal
但是在代碼的某些地方,有這樣的查找
.lookup("com.abc.cde.Test");
這些查找是使用 java 命名空間的本地查找嗎?
如何處理這些查找? 我應該添加 java 命名空間,如 java:global/java:app 等嗎?
正如您所注意到的,WebSphere JNDI 傳統自定義綁定當前在 Liberty 中不起作用。 為了將來參考,我們目前正在努力讓他們在 Liberty 中工作,以便將來更輕松地進行遷移。 ( https://github.com/OpenLiberty/open-liberty/issues/7918 )
您對查找感到困惑( InitialContext.lookup("com.abc.cde.Test");
)是我們所說的遠程 bean 的默認短格式綁定,它只是遠程接口。
將這些替換為 Java 命名空間查找是正確的,使用以下模式:
java:global/<appname>/<modulename>/<bean>!<interface>
java:app/<modulename>/<bean>!<interface>
java:module/<bean>!<interface>
<interface>
是限定的接口名稱,包括包java:app
或java:module
的調用需要與 bean 位於同一應用程序或模塊中。此外,如果您運行 Liberty Server,我們會使用 CNTR0167I 打印出 java:global 綁定:
作為參考,舊的默認綁定還不起作用:
ejblocal:<appname>/<modulename>.jar/<bean>#<interface>
ejblocal:<interface>
ejb/<appname>/<modulename>.jar/<bean>#<interface>
<interface>
還有一些舊的自定義綁定表單可以通過綁定文件指定,例如ejb-jar-bnd.xml
,它們目前具有相同的遷移策略,但除非您也碰到了他們。 安全的賭注是,如果它使用不是 java 命名空間的查找來查找 bean,只需將其替換為 java:global。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.