我目前正在尝试在JBoss 6.1上部署一个应用程序,其中包含一些JMS MessageListeners。 MessageListeners通过JNDI
(使用Spring)获取连接工厂,我正在使用名为HornetQ
的{{1}}默认连接工厂。我目前只使用ConnectionFactory
开头的默认JMS Queues
:JBoss
和DLQ
当我通过ExpiryQueue
部署时,应用启动没有问题。
当我通过将应用程序复制到deploy目录并启动服务器进行部署时,应用程序将无法开始提供以下错误消息:JMX
。这意味着应用程序在javax.naming.NameNotFoundException: ConnectionFactory not bound
开始之前启动,并且可以通过HornetQ
获取。
我已经研究过使用JNDI
创建依赖项但是我无法使其工作,我不确定这是否是正确的方法。
如何确保在我的应用之前启动jboss-dependency.xml
?
答案 0 :(得分:5)
昨天我遇到了这个问题,问题是由JBoss在注册ConnectionFactory和Queues之前启动你的应用程序引起的。
我发现我的应用程序完全从Eclipse部署,等到JBoss在部署之前启动之后。
解决方案是修改server/{node}/deploy/jbossweb.sar/META-INF/jboss-beans.xml
文件,在WebServer
bean中添加以下内容。
<depends>org.hornetq:module=JMS,name="NettyConnectionFactory",type=ConnectionFactory</depends>
<depends>org.hornetq:module=JMS,name="InVMConnectionFactory",type=ConnectionFactory</depends>
<depends>org.hornetq:module=JMS,name="NettyThroughputConnectionFactory",type=ConnectionFactory</depends>
这对我有用,我在这里找到了解决方案:http://edemmorny.com/2011/10/17/jboss-as-6-startup-connectionfactory-not-bound/