JBoss HornetQ设置和Spring

时间:2015-08-05 07:06:59

标签: wildfly hornetq spring-jms

我查看了SO建议的线程但是无法通过以下配置传递JNDI查找阶段。

我的HornetQ conf。就是这个。

<?xml version="1.0" encoding="UTF-8"?>
<messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0">
<hornetq-server>
<connection-factory name="ConnectionFactory">
    <connectors>
        <connector-ref connector-name="in-vm"/>
    </connectors>
    <entries>
    <entry name="java:/ConnectionFactory"/>
    </entries>
    <consumer-window-size>0</consumer-window-size>
    <retry-interval>1000</retry-interval>
    <retry-interval-multiplier>1.5</retry-interval-multiplier>
    <max-retry-interval>60000</max-retry-interval>
    <reconnect-attempts>1000</reconnect-attempts>
</connection-factory>

<!--the queue used by the example-->
<jms-destinations>
<jms-queue name="test4">
    <entry name="jms/queue/test4"/>
    <entry name="java:jboss/exported/jms/queue/test4"/>
</jms-queue>
</jms-destinations>
</hornetq-server>

My Spring conf。文件就是这个。

        <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/ConnectionFactory" />
<property name="lookupOnStartup" value="false"/>
<property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>
<bean id="myBrokerSendDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName">
          <value>jms/queue/test4</value>
      </property>
      <property name="resourceRef"><value>true</value></property>
</bean>
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    <property name="defaultDestination" ref="myBrokerSendDestination" />
</bean>

我无法理解JNDI语法,我尝试过很多种组合。我得到了

Caused by: javax.naming.NameNotFoundException: jms/queue/test4 -- service jboss.naming.context.java.jms.queue.test4

我在JBOSS WildFly 9中使用Arquillian部署我的EAR。我不知道Arquillian是否与此有关。但我看到成功的部署消息,但只有这个特定的错误才会失败。

更新:我已根据https://docs.jboss.org/author/display/WFLY9/Messaging+configuration

进行了修改

但它仍然失败。

更新:问题似乎是hornetq-jms.xml。所以这个问题在这个时候是无法解决的。

2 个答案:

答案 0 :(得分:0)

我认为您不需要本地JNDI中的前导java:/

<queue name="test4">
    <entry name="queue/test4"/>
    <entry name="java:jboss/exported/jms/queue/test4"/>
</queue>

答案 1 :(得分:0)

检查是否已启用远程命名:

<subsystem xmlns="urn:jboss:domain:naming:1.4">
     <remote-naming/>
</subsystem>