EJB部署描述符的优先级

时间:2015-06-13 10:57:16

标签: java-ee-6 ejb-3.1 websphere-8 deployment-descriptor

如果我在WAR中打包了EJB,因为它是作为REST Web服务公开的,根据this link,我需要在WEB-INF目录的根目录下安装ejb - * .xml文件。我当前的环境是Websphere 8.5和EJB 3.1

如果我稍后在同一个应用程序中添加多个EJB(在单独的EJB项目中)并在相应的项目中定义其部署描述符,那么这些似乎会被忽略。似乎我的所有描述符都应该在WEB-INF目录中的描述符中定义 - 换句话说,似乎我应该在WEB-INF目录中扩充描述符,即使对于定义为单独项目的EJB也是如此。 p>

这是它需要的方式还是我错过了一些迫使我这样做的东西?我找不到任何解释这部分的文件。

更多详情: 这就是我的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的根目录。

1 个答案:

答案 0 :(得分:0)

For EJBs in a WAR module, the files go in WEB-INF, so .ear!/MyWeb.war!/ejb-jar.xml, .ear!/MyWeb.war!/ibm-ejb-jar-bnd.xml, etc.

For EJBs in separator EJB modules outside a WAR, the files go in META-INF. So, .ear!/ejb1.jar!/META-INF/ejb-jar.xml, .ear!/ejb1.jar!/META-INF/ibm-ejb-jar-bnd.xml, etc.