如何在ejb-jar.xml部署描述符中重用元素?

时间:2017-09-19 15:26:30

标签: java java-ee ejb ejb-3.0 ejb-3.1

我目前正在编写一组与一些旧的EJB2代码接口的EJB。作为其中的一部分,我有一个ejb-jar.xml部署描述符,其中包含会话bean的resource-refs和ejb-refs。所有这些定义基本相同 - 只有会话bean的名称在它们之间有所不同。显然,这并不理想 - 每次添加新bean时,我都必须复制并粘贴一大块XML。

结构看起来像这样:

<ejb-jar 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1">
    <enterprise-beans>
        <session>
            <ejb-name>/* redacted */</ejb-name>

            <resource-ref>
                <res-ref-name>/* redacted */</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Application</res-auth>
                <lookup-name>/* redacted */</lookup-name>
            </resource-ref>

            <ejb-ref>
                <ejb-ref-name>/* redacted */</ejb-ref-name>
                <ejb-ref-type>Session</ejb-ref-type>
                <home>/* redacted */</home>
                <remote>/* redacted */</remote>
            </ejb-ref>

            /* about 20 more ejb-refs later... */
        </session>

        /* several near identical session beans here ... */
</ejb-jar>

有没有办法在多个定义中重复使用这些引用而不重复?或者,或者,有没有更好的方法来实现我失踪的相同最终结果?

1 个答案:

答案 0 :(得分:0)

在我的特定场景中,我能够通过将EJB打包为WAR而不是普通的JAR文件来解决问题 - 这允许我在web.xml中为整个应用程序提供引用,而不是而不是每个bean级别。