Аннотировать StatelessBean с @Depends to HornetQ-JMS Queue - PullRequest
2 голосов
/ 21 июля 2011

У меня есть простое определение JMS-очереди в файле my-hornetq-jms.xml:

<configuration xmlns="urn:hornetq"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
      <queue name="my.test.queue">  
        <entry name="/queue/myTest"/>  
      </queue>  
</configuration>

Очередь активирована правильно, и теперь я хочу добавить зависимость в мой @Stateless Bean.Этот вопрос похож на Как я могу обеспечить наличие очередей шершней при запуске моего веб-приложения в JBOSS 6.0? , но я хочу определить зависимость с помощью аннотации.Я попробовал это (в нескольких перестановках), но не нашел правильный путь:

@Depends(value="org.hornetq:module=JMS,type=Queue,name=my.test.queue")

Я всегда получаю ошибки, подобные этому:

Dependency "<UNKNOWN jboss.j2ee:jar=my.war,name=MyBean,service=EJB3>"
(should be in state "Installed", but is actually in state "** UNRESOLVED Demands
'org.hornetq:module=JMS,name=my.test.queue,type=Queue' **")

Кстати: в JBoss-5 Iопределили это так: @Depends(value = "jboss.messaging.destination:service=Queue,name=my.test.queue")

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Вы должны быть в состоянии определить зависимость, используя это имя Бина:

org.hornetq: module = JMS, type = Topic, name = "YOUR-TOPIC-NAME"

или

org.hornetq: module = JMS, type = Queue, name = "YOUR-TOPIC-NAME"

Для получения дополнительной информации посмотрите реализацию org.hornetq.api.core.management.ObjectNameBuilder, так как здесь для определения имен используются методы развертывания.

Также: эта зависимость между MBeans будет работать только на AS6 или EAP 5.1.1+.Это не будет работать с AS5 или любой другой ручной установкой, поскольку развертыватели AS не устанавливаются при ручной установке.

Также: AS7 имеет другую зависимость от внедрения.Это, вероятно, не будет работать на AS7 либо.(Я считаю, что в этом нет необходимости, поскольку вы можете просто ввести имя JNDI напрямую, т. Е. Сделать это лучше в AS7)

1 голос
/ 29 июля 2011

Ошибки, описанные выше, произошли из-за неправильного импорта @Depends:

import org.jboss.ejb3.annotation.Depends; //WRONG
import org.jboss.beans.metadata.api.annotations.Depends; //CORRECT
...