在 WebSphere 8.5 中覆盖 EJB 绑定名称
Overriding EJB binding name in WebSphere 8.5
我正在开发 Java EE 应用程序,它与其他服务有很多集成。所有集成都是通过远程 EJB bean 完成的。因此,目前我有 3 或 4 个 EJB 项目,它们作为 EAR 部署在 WebSphere 上以用作模拟(因为我无法访问我的开发环境中的真实服务)。我想要做的是将所有这些模拟组合到一个 EAR 包中,这样我就可以拥有一个模拟配置页面(return 值、异常等)。所以我做了 generalMock.ear 申请。现在的问题是 EJB 绑定名称与以前不同。
例如,实际应用程序使用以下绑定名称:
binding-name="java:global/company-app-calculator-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
但现在绑定名称如下所示:
binding-name="java:global/general-mock-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
有没有办法更改全局绑定名称?我试图创建文件“ibm-ejb-jar-bnd.xml”并将其添加到 EJB mock 的 META-INF 文件夹中,我想在其中更改绑定名称但我没有工作。
这是我的“ibm-ejb-jar-bnd.xml”配置文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
version="1.0">
<session name="CalculatorSb">
<interface
binding-name="java:global/company-app-calculator-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
class="com.company.beans.app.calculator.CalculatorSbRemote"/>
</sescomon>
</ejb-jar-bnd>
我在 Java 1.6 EE 上使用 IBM WebSphere 8.5 运行。
java:
名称的格式由 Java EE 和 EJB 规范定义,以实现跨供应商的可移植性。通常,规范不提供覆盖这些名称的方法,WebSphere 也不提供。
ibm-ejb-jar-bnd.xml
文件中的 <interface>
元素可以在传统的 WebSphere 中用于定义 EJB 在服务器上下文根中的绑定位置(不是 java:
位置),在除了 java:
位置。 binding-name
值不能以 java:
.
开头
基本上,您需要更改模拟 EAR 的名称,或在 application.xml
中设置应用程序名称,但似乎只能解决模拟应用程序中其中一个 EJB 模块的问题.
或许考虑使用 EJB 引用而不是在 java:global
中执行直接查找。这将允许您的应用程序始终查找永远不会更改的 EJB 引用名称。您只需要根据环境将 EJB 引用名称绑定到真实名称或模拟名称。
您是否尝试过通过添加文件 META-INF/ibm-ejb-jar-bnd.xml 来使用 EJB 的简单绑定名称?它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
version="1.0">
<session simple-binding-name="ejb/session/myEJBBean" name="myEJBBean">
</ejb-jar-bnd>
现在客户端可以通过将 ejb 引用映射到简单绑定名称来连接到上面的 EJB。
<ejb-ref name="myRef" binding-name="ejb/session/myEJBBean"/>
我正在开发 Java EE 应用程序,它与其他服务有很多集成。所有集成都是通过远程 EJB bean 完成的。因此,目前我有 3 或 4 个 EJB 项目,它们作为 EAR 部署在 WebSphere 上以用作模拟(因为我无法访问我的开发环境中的真实服务)。我想要做的是将所有这些模拟组合到一个 EAR 包中,这样我就可以拥有一个模拟配置页面(return 值、异常等)。所以我做了 generalMock.ear 申请。现在的问题是 EJB 绑定名称与以前不同。
例如,实际应用程序使用以下绑定名称:
binding-name="java:global/company-app-calculator-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
但现在绑定名称如下所示:
binding-name="java:global/general-mock-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
有没有办法更改全局绑定名称?我试图创建文件“ibm-ejb-jar-bnd.xml”并将其添加到 EJB mock 的 META-INF 文件夹中,我想在其中更改绑定名称但我没有工作。 这是我的“ibm-ejb-jar-bnd.xml”配置文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
version="1.0">
<session name="CalculatorSb">
<interface
binding-name="java:global/company-app-calculator-ear/company-app-calculator-ejb/CalculatorSb!com.company.beans.app.calculator.CalculatorSbRemote"
class="com.company.beans.app.calculator.CalculatorSbRemote"/>
</sescomon>
</ejb-jar-bnd>
我在 Java 1.6 EE 上使用 IBM WebSphere 8.5 运行。
java:
名称的格式由 Java EE 和 EJB 规范定义,以实现跨供应商的可移植性。通常,规范不提供覆盖这些名称的方法,WebSphere 也不提供。
ibm-ejb-jar-bnd.xml
文件中的 <interface>
元素可以在传统的 WebSphere 中用于定义 EJB 在服务器上下文根中的绑定位置(不是 java:
位置),在除了 java:
位置。 binding-name
值不能以 java:
.
基本上,您需要更改模拟 EAR 的名称,或在 application.xml
中设置应用程序名称,但似乎只能解决模拟应用程序中其中一个 EJB 模块的问题.
或许考虑使用 EJB 引用而不是在 java:global
中执行直接查找。这将允许您的应用程序始终查找永远不会更改的 EJB 引用名称。您只需要根据环境将 EJB 引用名称绑定到真实名称或模拟名称。
您是否尝试过通过添加文件 META-INF/ibm-ejb-jar-bnd.xml 来使用 EJB 的简单绑定名称?它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
version="1.0">
<session simple-binding-name="ejb/session/myEJBBean" name="myEJBBean">
</ejb-jar-bnd>
现在客户端可以通过将 ejb 引用映射到简单绑定名称来连接到上面的 EJB。
<ejb-ref name="myRef" binding-name="ejb/session/myEJBBean"/>