WebSphere Liberty 的 EJB 绑定
EJB Bindings for WebSphere Liberty
我正在努力将 ear 应用程序从 WebSphere 8.5 迁移到 liberty。
作为更改的一部分,我已将 JNDI 绑定(在查找中)替换为 java 名称空间
例如
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>
为限定接口名,包含包
- 注意 2:对
java:app
或 java:module
的调用需要在与 bean 相同的应用程序或模块中。
此外,如果您 运行 Liberty 服务器,我们会打印出 java:global 与 CNTR0167I:
的绑定
作为参考,旧的默认绑定尚未生效:
- 本地长格式:
ejblocal:<appname>/<modulename>.jar/<bean>#<interface>
- 本地简称:
ejblocal:<interface>
- 远程长格式:
ejb/<appname>/<modulename>.jar/<bean>#<interface>
- 远程短格式:
<interface>
还有一些旧的自定义绑定表单可以通过绑定文件指定,例如 ejb-jar-bnd.xml
,它们目前具有相同的迁移策略,但我不会讨论所有不同的样式,除非您也 运行 加入其中。安全的赌注是,如果它正在查找一个不是 java 命名空间的查找 bean,只需将其替换为 java:global.
我正在努力将 ear 应用程序从 WebSphere 8.5 迁移到 liberty。
作为更改的一部分,我已将 JNDI 绑定(在查找中)替换为 java 名称空间
例如
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>
为限定接口名,包含包 - 注意 2:对
java:app
或java:module
的调用需要在与 bean 相同的应用程序或模块中。
- 注:
此外,如果您 运行 Liberty 服务器,我们会打印出 java:global 与 CNTR0167I:
的绑定作为参考,旧的默认绑定尚未生效:
- 本地长格式:
ejblocal:<appname>/<modulename>.jar/<bean>#<interface>
- 本地简称:
ejblocal:<interface>
- 远程长格式:
ejb/<appname>/<modulename>.jar/<bean>#<interface>
- 远程短格式:
<interface>
还有一些旧的自定义绑定表单可以通过绑定文件指定,例如 ejb-jar-bnd.xml
,它们目前具有相同的迁移策略,但我不会讨论所有不同的样式,除非您也 运行 加入其中。安全的赌注是,如果它正在查找一个不是 java 命名空间的查找 bean,只需将其替换为 java:global.