Настройка MDB для прослушивания нескольких очередей - PullRequest
4 голосов
/ 04 мая 2011

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

Ответы [ 2 ]

6 голосов
/ 24 августа 2011

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

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

0 голосов
/ 20 апреля 2018

используйте 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")
    })'
...