【问题标题】:How to re-use elements in a ejb-jar.xml deployment descriptor?如何重用 ejb-jar.xml 部署描述符中的元素?
【发布时间】:2018-02-28 11:11:37
【问题描述】:

我目前正在编写一组与一些旧 EJB2 代码交互的 EJB。作为其中的一部分,我有一个 ejb-jar.xml 部署描述符,其中包含会话 bean 的资源引用和 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>

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

【问题讨论】:

  • 这是 websphere,如果是,是什么版本?在 websphere 7 之前(除非修补了 7),没有解决方案,因为 Java EE 5 附带了这些解决方案。JEE6 确实具有全局资源引用,您可能必须检查与您的特定产品相对应的文档。此外,如果您使用的是适当版本的 RAD,它可能会自动处理此问题。
  • @Gautam:WebSphere 8/JEE 6,谢天谢地 - 我们的应用程序是遗留的,但它不是 遗留的:p 由于我们还必须支持 JBoss 7,所以有点复杂,尽管。我会研究一下全球资源参考,谢谢你的建议。
  • 您可能想从这里开始查看JEE namespaces
  • 每个会话 bean 是否实际使用所有这些 ejb-refs?每一个都用于从每个 bean 的调用范围内进行单独的“java:comp/env/...”JNDI 查找。看起来您可能正在为所有事情使用相同的大胖“定位器”服务......
  • @SteveC:可能不是全部——我正在迁移一个应用程序,该应用程序用于通过一个 EJB 路由所有内容以具有多个 EJB/JAX-WS 端点,所以这是所有 EJB 的完整列表在应用程序中 - 可能会缩小范围......

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2015-02-05
    相关资源
    最近更新 更多