Я использую EJB 3.1 и хочу настроить MDB для прослушивания нескольких очередей.
Я бы предпочел определить имена очередей с помощью XML, а другие определения — с помощью аннотаций.
Можно ли это сделать?
Настройка MDB для прослушивания нескольких очередей
Ответы (2)
После создания экземпляра MDB может прослушивать только ресурс, указанный в его целевом свойстве ActivationConfigProperty, однако вы можете создать несколько экземпляров одного и того же MDB с разными местами назначения (очередями в вашем случае).
Создайте две записи в файле ejb-jar.xml с разными свойствами назначения и имени ejb, но одним и тем же классом ejb.
person
jpredham
schedule
24.08.2011
Привет jperdham, спасибо за ваш ответ. Вы имеете в виду, что я должен определить все свойства, которые мне нужны, с помощью аннотаций ActivationConfigProperty, а в файле ejb-jar.xml по-другому определить только пункт назначения и имя ejb?
- person Ittai; 25.08.2011
Эй, Иттай, вы можете поместить 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