Я принимаю приложение, которое в настоящее время выводит на ActiveMQ, и назначает его для использования JBoss HornetQ, который был настроен для меня. Приложение является автономным (не работает в контейнере EJB) и использует Spring 2 (хотя я обновил до Spring 3, чтобы получить доступ к атрибуту name).Весенний боб для настройки соединения с продуктом JBoss HornetQ
Я 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 имя класса, 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: prefix и все остальное, что я добавил, возвратил ошибку «не найден» для очереди. Я закончил создание тестового класса java для соединения с большим количеством протоколирования и по-прежнему получил ту же ошибку. Оказалось, что это файл сторонних разработчиков JAR, который необходимо обновить. – user1819136
Да, префикс java: для jboss. Но идея заключалась в использовании jndi и зависела только от jms api, а не от hornetq артефактов. – united