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

Lee*_*rus 1 jboss jndi jms hornetq jboss6.x

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

当我通过JMX应用程序部署时没有问题启动.

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

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

如何确保HornetQ在我的应用程序之前启动?

小智 5

我昨天遇到了这个问题,问题是由JBoss在注册ConnectionFactory和Queues之前启动你的应用程序引起的.

我发现我的应用程序完全从Eclipse部署,等到JBoss在部署之前启动之后.

解决方案是修改server/{node}/deploy/jbossweb.sar/META-INF/jboss-beans.xmlWebServerbean中添加以下内容的文件.

<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>
Run Code Online (Sandbox Code Playgroud)

这对我有用,我在这里找到了解决方案:http://edemmorny.com/2011/10/17/jboss-as-6-startup-connectionfactory-not-bound/