如何在 WebSphere Liberty 中更改 EJB JNDI 绑定

How to change EJB JNDI bindings in WebSphere Liberty

我有一个部署到 WebSphere Liberty 8.5 的 ear 应用程序。该应用程序包含一个 EJB 模块,我在其中声明了几个 EJB。我的 EJB 声明如下:

public interface MyEjb...

@Local
public interface MyEjbLocal extends MyEjb...

@Remote
public interface MyEjbRemote extends MyEjb...

@Stateless
public class MyEjbBean implements MyEjbLocal, MyEjbRemote...

当应用程序启动时,我可以在 WebSphere Liberty 日志中看到此 EJB 获得以下 JNDI 名称:

java:global/my-ear-app-name/my-ejb-module-name/MyEjbBean!my.package.name.MyEjbLocal,
java:global/my-ear-app-name/my-ejb-module-name/MyEjbBean!my.package.name.MyEjbRemote

我需要更改这些名称。如果我没理解错的话,在ibm-ejb-jar-bnd.xml文件中就可以完成。我的 EJB 模块 jar 文件的 META-INF 目录中有一个 ibm-ejb-jar-bnd.xml 文件。该文件包含以下配置:

<session name="MyEjbBean" simple-binding-name="my/new/jndi/name"></session>

但是,此配置没有任何效果:当我启动 ear 应用程序时,我仍然在日志中看到默认的 JNDI 绑定。

我知道 WebSphere Liberty 正确获取了 ibm-ejb-jar-bnd.xml,因为当我在 <session> 标记中指定错误的 bean 名称时,我在 WebSphere 日志中收到警告。

如何在 WebSphere Liberty 中更改 EJB JNDI 绑定?

我的理解是 simple-binding-name 在 WebSphere 的 ibm-ejb-jar-bnd.xml 文件中被忽略 自由。

它在下面的文档中提到(搜索 "simple-binding"): http://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.doc/ae/rwlp_restrict.html