我使用JBoss [EAP] 5.0.0.GA和我有包含一个包含一些的MDB其取决于它们使用的JMS队列的存在的EJB罐子的EAR。当我在.../server/all/deploy/messaging/myqueues-service.xml配置的队列不存在任何问题。

然而,我想配置EAR文件队列,以避免必须直接更改到JBoss配置。没有问题,我把myqueues-service.xml文件到EAR的根部和添加的参考到我jboss-app.xml如下:

<jboss-app>
    <module-order>strict</module-order>
    <loader-repository>
        seam.jboss.org:loader=my-ear.ear
    </loader-repository>
    <module>
        <service>myqueues-service.xml</service>
    </module>
</jboss-app>

然而,当我这样做时,JBoss加载EJB JAR(包含在我的-ear.ear),然后再配置JMS队列之后。此结果中的错误时,MDB被加载:

12:16:02,714 WARN  [JmsActivation] Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@13a59e .....
javax.naming.NameNotFoundException: MyQueue not bound

这不是一个巨大的问题,因为后来的多边开发银行成功地重新连接到JMS:

12:16:12,698 INFO  [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@f91ad5
12:16:12,823 INFO  [JmsActivation] Reconnected with messaging provider.

但我真的很喜欢,以避免任何错误,而为了做到这一点,我需要一种方法来迫使JBoss的先配置JMS队列,加载EJB JAR之前。有没有办法做到这一点?作为参考,这里是为EAR的application.xml

<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
  <display-name>my-ear</display-name>
  <module>
    <ejb>my-ejb.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>my.war</web-uri>
      <context-root>myroot</context-root>
    </web>
  </module>
</application>

任何建议表示赞赏。

有帮助吗?

解决方案

确定, jaikiran PAI 上community.jboss。组织论坛帮了我。解决的办法是添加JMS队列为对MDB的依赖性。在我的情况下,我使用的@Depends注释:

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MyQueue") })
@Depends("jboss.messaging.destination:service=Queue,name=MyQueue")
public class MyMessageListener implements MessageListener {
    ...
}

您如果不使用注释可以这样做使用的jboss.xml相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top