类org.jboss.jms.server.destination.QueueService和org.jboss.mq.server.jmx.Queue之间有什么区别?
我正在使用JBoss [EAP] 5.0.0.GA,我有一个包含EJB jar的EAR,它包含一些依赖于它们使用的JMS队列的存在的MDB.当我配置队列.../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>
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,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
Run Code Online (Sandbox Code Playgroud)
这不是一个大问题,因为后来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.
Run Code Online (Sandbox Code Playgroud)
但我真的想避免出现任何错误,为了做到这一点,我需要一种方法来强制JBoss在加载EJB jar之前首先配置JMS队列.有没有办法做到这一点?作为参考,这里application.xml是EAR:
<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>
Run Code Online (Sandbox Code Playgroud)
任何建议赞赏.
我成功地将消息发送到ReceiverQueue我的localhost Jboss服务器上的队列名称,如何检索我发送给它的消息,或者如何检查队列中是否有任何消息(如果有的话).或者我可以得到某种解释是什么是最好的方法.谢谢
也可以接受有效的发送/接收教程.任何能让我发送到队列并从该队列接收消息的东西都会得到接受的答案.
我正在使用Spring.
我想要一个使用bean注入的应用程序上下文来实现它的解决方案.