EJB 部署描述符的优先级
Precedence of EJB Deployment Descriptors
如果我有一个打包在 WAR 中的 EJB,因为它作为 REST Web 服务公开,根据 this link,我需要有 ejb-*.xml WEB-INF 目录根目录下的文件。我现在的环境是Websphere 8.5和EJB 3.1
如果我稍后在同一个应用程序中添加多个 EJB(在单独的 EJB 项目中)并在各自的项目中定义其部署描述符,这些似乎会被忽略。似乎我所有的描述符都应该在 WEB-INF 目录中的描述符中定义——或者换句话说,我似乎应该增加 WEB-INF 目录中的描述符,即使对于定义为单独项目的 EJB。
这是它需要的样子还是我错过了迫使我这样做的东西?我找不到任何解释这部分的文档。
更多详情:
这就是我的 application.xml 的样子
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
<display-name>MyApp</display-name>
<module id="Module_1395346343165">
<web>
<web-uri>MyWeb.war</web-uri>
<context-root>myapp</context-root>
</web>
</module>
<module id="Module_1395346304194">
<ejb>ejb1.jar</ejb>
</module>
<module id="Module_1424684968934">
<ejb>ejb2.jar</ejb>
</module>
<module id="Module_1431010943758">
<ejb>ejb3.jar</ejb>
</module>
</application>
ejb1 将存在于 webapp 中。另外两个 ejb2 和 ejb3 是独立的 ejb 项目,它们应该位于 EAR 的根目录中。
对于 WAR 模块中的 EJB,文件进入 WEB-INF
,因此 .ear!/MyWeb.war!/ejb-jar.xml
、.ear!/MyWeb.war!/ibm-ejb-jar-bnd.xml
等
对于 WAR 之外的分隔 EJB 模块中的 EJB,文件进入 META-INF
。所以,.ear!/ejb1.jar!/META-INF/ejb-jar.xml
,.ear!/ejb1.jar!/META-INF/ibm-ejb-jar-bnd.xml
,等等
如果我有一个打包在 WAR 中的 EJB,因为它作为 REST Web 服务公开,根据 this link,我需要有 ejb-*.xml WEB-INF 目录根目录下的文件。我现在的环境是Websphere 8.5和EJB 3.1
如果我稍后在同一个应用程序中添加多个 EJB(在单独的 EJB 项目中)并在各自的项目中定义其部署描述符,这些似乎会被忽略。似乎我所有的描述符都应该在 WEB-INF 目录中的描述符中定义——或者换句话说,我似乎应该增加 WEB-INF 目录中的描述符,即使对于定义为单独项目的 EJB。
这是它需要的样子还是我错过了迫使我这样做的东西?我找不到任何解释这部分的文档。
更多详情: 这就是我的 application.xml 的样子
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
<display-name>MyApp</display-name>
<module id="Module_1395346343165">
<web>
<web-uri>MyWeb.war</web-uri>
<context-root>myapp</context-root>
</web>
</module>
<module id="Module_1395346304194">
<ejb>ejb1.jar</ejb>
</module>
<module id="Module_1424684968934">
<ejb>ejb2.jar</ejb>
</module>
<module id="Module_1431010943758">
<ejb>ejb3.jar</ejb>
</module>
</application>
ejb1 将存在于 webapp 中。另外两个 ejb2 和 ejb3 是独立的 ejb 项目,它们应该位于 EAR 的根目录中。
对于 WAR 模块中的 EJB,文件进入 WEB-INF
,因此 .ear!/MyWeb.war!/ejb-jar.xml
、.ear!/MyWeb.war!/ibm-ejb-jar-bnd.xml
等
对于 WAR 之外的分隔 EJB 模块中的 EJB,文件进入 META-INF
。所以,.ear!/ejb1.jar!/META-INF/ejb-jar.xml
,.ear!/ejb1.jar!/META-INF/ibm-ejb-jar-bnd.xml
,等等