用于WebSphere Liberty的EJB绑定

问题描述 投票:0回答:1

我正在将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等?

ejb websphere-liberty
1个回答
0
投票

您已经注意到,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:appjava: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。

© www.soinside.com 2019 - 2024. All rights reserved.