我正在接收一个当前输出到ActiveMQ的应用程序,并将其重新命名为使用已为我设置的JBoss HornetQ。该应用程序是独立的(不在EJB容器中运行),并使用Spring 2(尽管我已更新到Spring 3以访问'name'属性)。用于设置JBoss HornetQ的连接工厂的Spring Bean
我refered到的例子,它出来的:
<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:
我匹配的构造函数中的异常“公共HornetQJMSConnectionFactory(布尔公顷,org.hornetq .api.core.TransportConfiguration ... initialConnectors)“(从我使用的jboss-client.jar文件中的类文件中获取)。
我似乎也匹配的TransportConfiguration,这是构造“公共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>
这样做可行,但应用on没有运行在J2EE服务器上下文中,因此它会抱怨java:前缀,而我放入的任何内容都会为该队列带回“未找到”错误。 我最终创建了一个测试java类,用于具有很多日志记录的连接,并且仍然有相同的错误。原来是需要更新的第三方JAR文件。 – user1819136 2014-09-24 10:34:56
是的,java:前缀是针对jboss的。但是这个想法是使用jndi,并且仅取决于jms api,而不是hornetq文物。 – united 2014-09-24 19:15:31