我有一个对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>
答案 0 :(得分:4)
最好的方法是使用HornetQJMSClient.createConnectionFactory方法
您正在直接使用该实施,并且可能会发生变化。
HornetQJMSClient是API的一部分,因此在版本之间更好地保留合同。
您应该将您的示例转换为使用HornetQJMSClient ...
关于你发现这个的博客,也许你应该指出这个问题/答案,因为博客使用的是内部实现,而不是公共API。
答案 1 :(得分:2)
我想我找到了解决方案:
只使用 HornetQJMSConnectionFactory (里面有 JMS 字样)。 似乎HornetQConnectionFactory的旧实现是javax.jms.ConnectionFactory,但现在它不是。