【发布时间】:2014-11-16 08:20:35
【问题描述】:
我正在使用一个当前输出到 ActiveMQ 的应用程序,并重新指向它以使用为我设置的 JBoss HornetQ。该应用程序是一个独立的应用程序(不在 EJB 容器中运行),并使用 Spring 2(尽管我已更新到 Spring 3 以访问“名称”属性)。
我参考了一些例子,结果如下:
<bean name="connectionFactory" class="org.hornetq.jms.client.HornetQJMSConnectionFactory">
<constructor-arg name="ha" value="false"/>
<constructor-arg name="initialConnectors">
<bean name="transportConfiguration" class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg name="className" value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />
<constructor-arg name="params">
<map key-type="java.lang.String" value-type="java.lang.Object">
<entry key="host" value="127.0.0.1" />
<entry key="port" value="5445" />
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
使用它会产生异常
"org.springframework.beans.factory.BeanCreationException: Error creating bean with name connectionFactory' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.hornetq.jms.client.HornetQJMSConnectionFactory]: Constructor threw exception; nested exception is java.lang.NoSuchFieldError:
我将构造函数“public HornetQJMSConnectionFactory(boolean ha, org.hornetq.api.core.TransportConfiguration... initialConnectors)”(取自我正在使用的 jboss-client.jar 文件中的类文件)匹配为据我所知。
我似乎也在匹配 TransportConfiguration 的构造函数,即“public TransportConfiguration(java.lang.String className, java.util.Map params)”
那么,谁能指出我在这里做错了什么?我觉得这会很愚蠢:)
我已尝试将类型附加到以下所有内容,但仍然得到相同的结果:
<bean name="connectionFactory" class="org.hornetq.jms.client.HornetQJMSConnectionFactory">
<constructor-arg name="ha" value="false" type="boolean"/>
<constructor-arg name="initialConnectors" type="org.hornetq.api.core.TransportConfiguration[]">
<bean name="transportConfiguration" class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg name="className" value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" type="java.lang.String"/>
<constructor-arg name="params" type="java.util.Map">
<map key-type="java.lang.String" value-type="java.lang.Object">
<entry key="host" value="127.0.0.1" />
<entry key="port" value="5445" />
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
【问题讨论】: