HornetQConnectionFactory不是javax.jms.ConnectionFactory

时间:2012-10-10 18:45:20

标签: jms hornetq

我有一个对hornetQ:

的connectionFactory的spring-bean
   <bean name="connectionFactory" class="org.hornetq.jms.client.HornetQConnectionFactory" >
            <constructor-arg value="false" />
            <constructor-arg ref="transportConfiguration" />
        </bean>

并且,这个bean正在使用它:

<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"></property>
</bean>

当“jmsTemlpate”bean启动时,所有异常都失败了:

  

无法转换类型的属性值   'org.hornetq.jms.client.HornetQConnectionFactory'到必需的类型   'javax.jms.ConnectionFactory'

即。 jmsTemplate要求connectionFactory是一个javax.jms.ConnectionFactory,但它不是。

问题,如何以及在何处下载“HornetQConnectionFactory”的正确实现以满足要求。

我在我的pom.xml中使用这个deps:

   <hornetq.version>2.2.13.Final</hornetq.version>
   ...
   <dependency>
        <groupId>org.hornetq</groupId>
        <artifactId>hornetq-core</artifactId>
        <version>${hornetq.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hornetq</groupId>
        <artifactId>hornetq-jms</artifactId>
        <version>${hornetq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hornetq</groupId>
        <artifactId>hornetq-spring-integration</artifactId>
        <version>${hornetq.version}</version>
    </dependency>

2 个答案:

答案 0 :(得分:4)

最好的方法是使用HornetQJMSClient.createConnectionFactory方法

您正在直接使用该实施,并且可能会发生变化。

HornetQJMSClient是API的一部分,因此在版本之间更好地保留合同。

您应该将您的示例转换为使用HornetQJMSClient ...

关于你发现这个的博客,也许你应该指出这个问题/答案,因为博客使用的是内部实现,而不是公共API。

答案 1 :(得分:2)

我想我找到了解决方案:

只使用 HornetQJMSConnectionFactory (里面有 JMS 字样)。 似乎HornetQConnectionFactory的旧实现是javax.jms.ConnectionFactory,但现在它不是。