Способ указания опций размещения MDB-компонентов в дескрипторе развертывания EJB существенно изменился в спецификации EJB 2.1. Это отражает изменения, внесенные в спецификацию J2EE Connector Architecture для того, чтобы адаптер ресурсов мог асинхронно доставлять сообщения в MDB-компонент, независимо от стиля, семантики и инфраструктуры системы обмена сообщениями. Следовательно, в версии 2.1 спецификации EJB предложен более общий механизм описания семантики обмена сообщениями, известный как свойства конфигурации активации (activation configuration properties).
В спецификации EJB определяются следующие свойства конфигурирации активации компонента, управляемого JMS-cообщениями.
• destinationType.
• messageSelector.
• acknowledgeMode.
• subscriptionDurability.
Обратите внимание, что названия этих свойств совпадают с именами эквивалентных свойств JMS ActivationSpec JavaBean, описанными в разделе 8.3.4, «JMS ActivationSpec JavaBean». Описания этих свойств также повторяются.
Это является намеренным со стороны спецификаций J2EE Connector Architecture и EJB. Намерение состоит в том, чтобы можно было автоматически объединить значения элементов конфигурации активации с соответствующими элементами JMS ActivationSpec JavaBean при конфигурировании JMS ActivationSpec JavaBean в ходе размещения конечной точки. И именно это происходит, когда WebSphere запускает приложение, содержащее компонент, управляемый сообщениями.
Примечание. Если данное свойство указано и в компоненте, управляемом сообщениями, и в спецификации активации JMS, с которой он связан, то используется значение, содержащееся в дескрипторе развертывания EJB компонента, управляемого сообщениями.
В примере 8.20 показана соответствующая запись для MDB с именем BankListener, который входит в пакет с примером WebSphereBank, поставляемым с WebSphere Application Server. Жирным шрифтом показаны элементы дескриптора развертывания, которые специфичны для обмена сообщениями. В табл. 8.8 показаны свойства конфигурации активации, которые определены в дескрипторе развертывания.
Пример 8.20. Дескрипторразмещения MDB-компонента BankListene r <message-driven id=»MessageDriven_1037986117955»> <ejb-name>BankListener</ejb-name>
<ejb-class>com.ibm.websphere.samples.bank.ejb.BankListenerBean</ejb-class> <messaging-type>javax.jms.MessageListener</messaging-type> <transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type> <message-destination-link>BankJSQueue</message-destination-link> <activation-config>
<activation-config-property>
<activation-config-property-name> destinationType
</activation-config-property-name> <activation-config-property-value> javax.jms.Queue
</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>
acknowledgeMode
</activation-config-property-name> <activation-config-property-value> Auto-acknowledge
</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>
messageSelector
</activation-config-property-name> <activation-config-property-value> JMSType = ‘transfer’
</activation-config-property-value> </activation-config-property> </activation-config>
<ejb-local-ref id="EJBLocalRef_1037986243867"> <description></description>
<ejb-ref-name>ejb/Transfer</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local-home>
com.ibm.websphere.samples.bank.ejb.TransferLocalHome </local-home>
<local>com.ibm.websphere.samples.bank.ejb.TransferLocal</local> <ejb-link>Transfer</ejb-link>
</ejb-local-ref>
</message-driven>