我正在使用 JBoss [EAP] 5.0.0.GA,并且有一个 EAR,其中包含一个 EJB jar,其中包含一些 MDB,这些 MDB 取决于它们使用的 JMS 队列是否存在。当我配置队列时.../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(包含在 my-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
这不是一个大问题,因为稍后 MDB 成功重新连接到 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 在加载 EJB jar 之前首先配置 JMS 队列。有什么办法可以做到这一点吗?作为参考,这里是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>
任何建议表示赞赏。