使用HornetQ ConnectionFactory通过JNDI启动带有EAR的JBoss时的NameNotFoundException

时间:2012-09-03 14:09:49

标签: jboss jms jndi jboss6.x hornetq

我目前正在尝试在JBoss 6.1上部署一个应用程序,其中包含一些JMS MessageListeners。 MessageListeners通过JNDI(使用Spring)获取连接工厂,我正在使用名为HornetQ的{​​{1}}默认连接工厂。我目前只使用ConnectionFactory开头的默认JMS QueuesJBossDLQ

当我通过ExpiryQueue部署时,应用启动没有问题。

当我通过将应用程序复制到deploy目录并启动服务器进行部署时,应用程序将无法开始提供以下错误消息:JMX。这意味着应用程序在javax.naming.NameNotFoundException: ConnectionFactory not bound开始之前启动,并且可以通过HornetQ获取。

我已经研究过使用JNDI创建依赖项但是我无法使其工作,我不确定这是否是正确的方法。

如何确保在我的应用之前启动jboss-dependency.xml

1 个答案:

答案 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/