【问题标题】:Overriding EJB binding name in WebSphere 8.5在 WebSphere 8.5 中覆盖 EJB 绑定名称
【发布时间】:2017-04-14 07:47:38
【问题描述】:

我正在开发与其他服务有很多集成的 Java EE 应用程序。所有集成都是通过远程 EJB bean 完成的。所以目前我有 3 或 4 个 EJB 项目,它们在 WebSphere 上部署为 EAR 以用作模拟(因为我无法访问我的开发环境中的真实服务)。我想做的是将所有这些模拟组合到一个 EAR 包中,这样我就可以拥有一个模拟配置页面(返回值、异常等)。所以我做了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 jakarta-ee ejb websphere ejb-3.1


    【解决方案1】:

    java: 名称的格式由 Java EE 和 EJB 规范定义,以实现跨提供者的可移植性。一般来说,规范没有提供覆盖这些名称的方法,WebSphere 也没有。

    除了java: 位置之外,ibm-ejb-jar-bnd.xml 文件中的&lt;interface&gt; 元素可以在传统 WebSphere 中用于定义 EJB 在服务器上下文根中的绑定位置(不是java: 位置)。 binding-name 值不能以 java: 开头。

    基本上,您需要更改模拟 EAR 的名称,或将应用程序名称设置为 application.xml,但似乎只能解决模拟应用程序中的 EJB 模块之一的问题。

    也许考虑使用 EJB 引用而不是在 java:global 中执行直接查找。这将允许您的应用程序始终查找永远不会更改的 EJB 引用名称。您只需将 EJB 引用名称绑定到真实名称或模拟名称,具体取决于环境。

    【讨论】:

      【解决方案2】:

      您是否尝试通过添加文件 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"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-02
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多