我正在开发Java EE应用程序,它与其他服务有许多集成。所有集成都通过远程EJB bean完成。所以目前我有3个或4个EJB项目,它们在WebSphere上作为EAR部署,用作模拟(因为我在开发环境中无法访问实际服务)。我想要做的是将所有这些模拟组合到一个EAR包中,这样我就可以拥有一个mocks的配置页面(返回值,异常等)。所以我做了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。
答案 0 :(得分:3)
java:
名称的格式由Java EE和EJB规范定义,以便跨提供程序进行移植。通常,规范不提供覆盖这些名称的方法,WebSphere也不提供。
<interface>
文件中的ibm-ejb-jar-bnd.xml
元素可以在传统的WebSphere中用于定义EJB在服务器上下文根(不是java:
位置)中的绑定位置,此外java:
位置。 binding-name
值不得以java:
开头。
基本上,您需要更改模拟EAR的名称,或者在application.xml
中设置应用程序名称,但似乎只能解决模拟应用程序中某个EJB模块的问题。 / p>
也许考虑使用EJB引用而不是在java:global
中执行直接查找。这将允许您的应用程序始终查找EJB引用名称,该名称永远不会更改。您只需要根据环境将EJB引用名称绑定到实名或模拟名称。
答案 1 :(得分:1)
您是否尝试过添加文件META-INF / ibm-ejb-jar-bnd.xml来使用EJB的simple-binding-name?它看起来像这样:
<?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"/>