Как повторно использовать элементы в дескрипторе развертывания ejb-jar.xml?

В настоящее время я пишу набор EJB, которые взаимодействуют с некоторым старым кодом EJB2. Как часть этого, у меня есть дескриптор развертывания ejb-jar.xml, который содержит ресурсы-ссылки и ejb-ссылки для сеансовых компонентов. Все эти определения в основном идентичны — между ними различается только имя сессионного компонента. Очевидно, это не идеально — каждый раз, когда я добавляю новый компонент, мне приходится копировать и вставлять большой блок 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>

Есть ли способ повторно использовать эти ссылки в нескольких определениях без дублирования? Или, наоборот, есть ли лучший способ добиться того же конечного результата, которого мне не хватает?


person Joe Clay    schedule 19.09.2017    source источник
comment
Это вебсфера, если да то какая версия? До websphere 7 (и даже до версии 7, если не исправлено) для этого не существовало решения, поскольку они поставляются с Java EE 5. JEE6 имеет ссылки на глобальные ресурсы, вам, возможно, придется проверить документацию, соответствующую вашему конкретному продукту. Кроме того, если вы используете соответствующую версию RAD, она может автоматически позаботиться об этом.   -  person Gautam    schedule 20.09.2017
comment
@Gautam: WebSphere 8/JEE 6, к счастью, наше приложение унаследовано, но это не это наследие: p Однако это немного сложно из-за того, что нам также приходится поддерживать JBoss 7. Я посмотрю на глобальные ссылки на ресурсы, спасибо за предложение.   -  person Joe Clay    schedule 20.09.2017
comment
Вы можете начать искать здесь пространства имен JEE.   -  person Gautam    schedule 20.09.2017
comment
Действительно ли каждый сессионный компонент использует все эти ejb-refs? Каждый из них предназначен для отдельного поиска java:comp/env/... JNDI из области вызова каждого компонента. Похоже, вы можете использовать один и тот же большой сервис Locator для всего...   -  person Steve C    schedule 21.09.2017
comment
@SteveC: Вероятно, не все из них - я переношу приложение, которое раньше маршрутизировало все через один EJB, чтобы иметь несколько конечных точек EJB/JAX-WS, так что это полный список всех EJB в приложении - вероятно, можно сузить его вниз...   -  person Joe Clay    schedule 21.09.2017


Ответы (1)


В моем конкретном сценарии я смог решить проблему, упаковав EJB в виде WAR вместо простого файла JAR - это позволило мне предоставить ссылки в web.xml для приложения в целом, а не на уровне отдельных компонентов. .

person Joe Clay    schedule 21.09.2017