Я использую Weblogic 9.2 с большим количеством MDB. Эти MDB обращаются к источникам данных JDBC и выполняют запись как в локальные, так и во внешние управляемые пункты назначения JMS с использованием локальных и внешних XAConnectionFactorys соответственно. Каждый MDB разграничивает управляемую контейнером JTA-транзакцию, которая должна быть распределена среди всех этих ресурсов.
Ниже приведен отрывок из моего файла ejb-jar.xml для MDB, который использует локальную очередь с именем "MyDestination" и создает для очереди IBM Websphere MQ с именем "MyOtherDestination". Эти логические имена связаны с физическими объектами в моем файле weblogic-ejb-jar.xml.
Обязательно ли использовать теги и для представления ConnectionFactory и Queue для MDB? Если это так, требуется ли это Weblogic или это требуется спецификацией J2EE? И с какой целью? Например, требуется ли поддерживать транзакционность XA?
Я уже знаю о преимуществах отделения администрируемых объектов от моего MDB с помощью имен, отображаемых в контексте именования MDB. Это единственное добавленное значение при указании этих тегов? Другими словами, допустимо ли просто ссылаться на эти объекты из моего MDB, используя InitialContext и полные имена объектов?
<enterprise-bean>
<message-driven>
<ejb-name>MyMDB</ejb-name>
<ejb-class>com.mycompany.MyMessageDrivenBean</ejb-class>
<transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination>
<message-destination-link>MyDestination</message-destination-link>
<resource-ref>
<res-ref-name>jms/myQCF</res-ref-name>
<res-type>javax.jms.XAConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<message-destination-ref>
<message-destination-ref-name>jms/myOtherDestination</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
<message-destination-link>MyOtherDestination</message-destination-link>
</message-destination-ref>
</message-driven>
<enterprise-bean>