用@Depends注释StatelessBean到HornetQ-JMS队列

时间:2011-07-21 09:57:32

标签: java jboss6.x hornetq

我在文件my-hornetq-jms.xml中有一个简单的JMS-Queue定义:

<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中添加依赖项。这个问题类似于How can I ensure that the hornet queues are there when my webapp starts in 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' **")

BTW:在JBoss-5中我的定义如下:@Depends(value = "jboss.messaging.destination:service=Queue,name=my.test.queue")

2 个答案:

答案 0 :(得分:3)

您应该能够使用此Bean名称定义依赖项:

org.hornetq:模块= JMS,类型=主题,名称= “YOUR-TOPIC-NAME”

org.hornetq:模块= JMS,类型=队列,名字= “YOUR-TOPIC-NAME”

有关更多信息,请查看org.hornetq.api.core.management.ObjectNameBuilder的实现,因为部署者在此处使用方法来定义名称。

此外:MBean之间的这种依赖关系仅适用于AS6或EAP 5.1.1+。这不适用于AS5或任何其他手动安装,因为手动安装时未安装AS部署器。

另外:AS7具有不同的注入依赖性。这也不适用于AS7。 (我相信它不需要,因为你可以直接注入JNDI名称。即在AS7以更好的方式完成)

答案 1 :(得分:1)

上述错误的发生是因为我导入了错误的@Depends

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