我正在接收一個當前輸出到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