如何在将应用程序从传统的 WebSphere Application Server 迁移到 Liberty 时正确重构 ibm-ejb-jar-bnd.xmi 文件?
How to correctly refactor ibm-ejb-jar-bnd.xmi file while doing app migration from WebSphere Application Server traditional to Liberty?
我在将应用程序从 WebSphere Application Server 传统 v9.0.0.7 迁移到 Liberty base v18.0.0.1 时遇到错误
控制台中的异常显示:
...
CWWKZ0002E: An exception occurred while starting the application AP. The exception message was: com.ibm.ws.container.service.metadata.MetaDataException: com.ibm.wsspi.adaptable.module.UnableToAdaptException: com.ibm.ejs.container.EJBConfigurationException: com.ibm.wsspi.adaptable.module.UnableToAdaptException: com.ibm.ws.javaee.ddmodel.DDParser$ParseException:
CWWKC2251E: The ejbBindings element is missing the required name attribute in the /META-INF/ibm-ejb-jar-bnd.xmi deployment descriptor on line 9.
...
EJB 绑定似乎有问题。
我一直在读到 Liberty 不支持 WAS 9 EJB 绑定,只将 EJB 绑定到 java : namespace 语法。
ibm-ejb-jar-bnd.xmi 文件看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<ejbbnd:EJBJarBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ejb="ejb.xmi" xmlns:ejbbnd="ejbbnd.xmi" xmi:id="EJBJarBinding_1090575365340">
<ejbJar href="META-INF/ejb-jar.xml#ejb-jar_ID"/>
<ejbBindings xmi:id="EnterpriseBeanBinding_1090575365340" jndiName="ejb/com/ap/ejb/AccountSessionHome">
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#AccountSession"/>
</ejbBindings>
<ejbBindings xmi:id="EnterpriseBeanBinding_1047783791228" jndiName="ejb/com/ap/ejb/UtilitySessionHome">
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#UtilitySession"/>
</ejbBindings>
</ejbbnd:EJBJarBinding>
我应该如何重构 ibm-ejb-jar-bnd.xmi 文件?
请帮我解决问题。
消息有点混乱,因为绑定文件的两个版本使用相同的解析器;旧的 ibm-ejb-jar-bnd.xmi
和新的 ibm-ejb-jar-bnd.xml
。新格式 (XML) 中定义的 name
属性是旧格式 (XMI) 中的计算值,并通过处理以下行来确定:
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#UtilitySession"/>
具体来说,解析器将跟随 href
并寻找相应 EJB 的 ejb-name
元素。您应该在 ejb-jar.xml
中查找相应的条目,如下所示:
<session id="UtilitySession">
要么缺失,要么可能多次出现。或者,它缺少一个 ejb-name
元素。
注意: ejb-jar.xml
3.0 级或更高版本的文件支持较新的 XML
格式,而 XMI
格式受支持ejb-jar.xml
的所有先前级别
我在将应用程序从 WebSphere Application Server 传统 v9.0.0.7 迁移到 Liberty base v18.0.0.1 时遇到错误
控制台中的异常显示:
...
CWWKZ0002E: An exception occurred while starting the application AP. The exception message was: com.ibm.ws.container.service.metadata.MetaDataException: com.ibm.wsspi.adaptable.module.UnableToAdaptException: com.ibm.ejs.container.EJBConfigurationException: com.ibm.wsspi.adaptable.module.UnableToAdaptException: com.ibm.ws.javaee.ddmodel.DDParser$ParseException:
CWWKC2251E: The ejbBindings element is missing the required name attribute in the /META-INF/ibm-ejb-jar-bnd.xmi deployment descriptor on line 9.
...
EJB 绑定似乎有问题。 我一直在读到 Liberty 不支持 WAS 9 EJB 绑定,只将 EJB 绑定到 java : namespace 语法。
ibm-ejb-jar-bnd.xmi 文件看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<ejbbnd:EJBJarBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ejb="ejb.xmi" xmlns:ejbbnd="ejbbnd.xmi" xmi:id="EJBJarBinding_1090575365340">
<ejbJar href="META-INF/ejb-jar.xml#ejb-jar_ID"/>
<ejbBindings xmi:id="EnterpriseBeanBinding_1090575365340" jndiName="ejb/com/ap/ejb/AccountSessionHome">
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#AccountSession"/>
</ejbBindings>
<ejbBindings xmi:id="EnterpriseBeanBinding_1047783791228" jndiName="ejb/com/ap/ejb/UtilitySessionHome">
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#UtilitySession"/>
</ejbBindings>
</ejbbnd:EJBJarBinding>
我应该如何重构 ibm-ejb-jar-bnd.xmi 文件? 请帮我解决问题。
消息有点混乱,因为绑定文件的两个版本使用相同的解析器;旧的 ibm-ejb-jar-bnd.xmi
和新的 ibm-ejb-jar-bnd.xml
。新格式 (XML) 中定义的 name
属性是旧格式 (XMI) 中的计算值,并通过处理以下行来确定:
<enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb-jar.xml#UtilitySession"/>
具体来说,解析器将跟随 href
并寻找相应 EJB 的 ejb-name
元素。您应该在 ejb-jar.xml
中查找相应的条目,如下所示:
<session id="UtilitySession">
要么缺失,要么可能多次出现。或者,它缺少一个 ejb-name
元素。
注意: ejb-jar.xml
3.0 级或更高版本的文件支持较新的 XML
格式,而 XMI
格式受支持ejb-jar.xml