2013-07-03 2 views
2

Почему мы можем установить только один тип назначения в ведомом состоянии в EJB?Почему мы можем установить только тип адресата (имя очереди) в ведомом компоненте?

@MessageDriven(activationConfig = { 
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
@ActivationConfigProperty(propertyName = "destination", propertyValue = "FileProcess"), 
@ActivationConfigProperty(propertyName = "transactionTimeout", propertyValue = "3600"), 
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "100") }) 
@TransactionManagement(value = TransactionManagementType.CONTAINER) 
public class FileMDB implements MessageListener { 

    //..... 
} 

Я хочу, чтобы добавить более одного типа назначения для одного MSD, Могу ли я добавить имя более чем один очереди или тип назначения в классе MDB?

+0

Попытайтесь добавить более подробную информацию, чего вы действительно хотите достичь, текущая проблема, если она есть, и т.п., иначе это неясно. –

ответ

0

Короткий ответ: потому что Sun (и группы экспертов JSR) разработали его таким образом.

Более длинный ответ: я предполагаю, что вам нужно обрабатывать множество очередей, все из которых содержат сообщения одного формата, и это не имеет значения для вашей службы, откуда пришло сообщение. Вы можете:

  1. Реализуйте базовый класс, реализующий интерфейс MessageListener и наследовать от него столько раз, сколько вы хотите, каждый раз применяя различные @ActivationConfigProperty аннотацию.
  2. (лучший вариант) Если ваша система обмена сообщениями позволяет, создайте дополнительную очередь и настройте все очереди, представляющие интерес для вашего приложения, для передачи сообщений в эту очередь. Затем вы можете оставаться с вашей текущей конфигурацией MDB без необходимости создания кода шаблона.