我正在将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:app绑定:
供参考,旧的默认绑定尚不可用:
ejblocal:<app>/<module>.jar/<bean>#<interface>
ejblocal:<interface>
ejb/<app>/<module>.jar/<bean>#<interface>
<interface>
还有一些可以通过绑定文件(例如ejb-jar-bnd.xml
)指定的旧的自定义绑定形式,这些形式目前具有相同的迁移策略,但是除非您也运行,否则我不会采用所有不同的样式进入他们。可以肯定的是,如果它正在使用非Java名称空间的查找来查找Bean,只需将其替换为java:global。