Настройка MDB для прослушивания нескольких очередей

Я использую EJB 3.1 и хочу настроить MDB для прослушивания нескольких очередей.
Я бы предпочел определить имена очередей с помощью XML, а другие определения — с помощью аннотаций.
Можно ли это сделать?


person Ittai    schedule 04.05.2011    source источник


Ответы (2)


После создания экземпляра MDB может прослушивать только ресурс, указанный в его целевом свойстве ActivationConfigProperty, однако вы можете создать несколько экземпляров одного и того же MDB с разными местами назначения (очередями в вашем случае).

Создайте две записи в файле ejb-jar.xml с разными свойствами назначения и имени ejb, но одним и тем же классом ejb.

person jpredham    schedule 24.08.2011
comment
Привет jperdham, спасибо за ваш ответ. Вы имеете в виду, что я должен определить все свойства, которые мне нужны, с помощью аннотаций ActivationConfigProperty, а в файле ejb-jar.xml по-другому определить только пункт назначения и имя ejb? - person Ittai; 25.08.2011
comment
Эй, Иттай, вы можете поместить ActivationConfigProperty либо в ejb-jar.xml, либо в аннотации, это действительно зависит от вас, где вы поместите свои свойства. Если у вас есть набор свойств, которые вы часто меняете или на каждой машине, проще изменить их в xml, чем создавать новую сборку вашего приложения. - person jpredham; 25.08.2011

используйте ejb-jar.xml вместо ibm-ejb-jar-bnd.xml

    <message-driven>
        <ejb-name>MessageDrivenBean1</ejb-name>
        <ejb-class>com.sample.MessageDrivenBean</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <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>
    </message-driven>

    <message-driven>
        <ejb-name>MessageDrivenBean2</ejb-name>
        <ejb-class>com.sample.MessageDrivenBean</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <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>
    </message-driven>

</enterprise-beans>

И удалите аннотацию @MessageDriven из вашего класса Java.

'@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
    })'
person JM Galicia    schedule 20.04.2018