2015-05-20 2 views
3

Я использую весенний ботинок и настраиваю несколько фабрик соединений (объединенные и jms). Проблема, которую я получаю, заключается в том, что, похоже, она пытается передать их одному и тому же объекту в javax.jms.ConnectionFactory. Таким образом, ее в результате этого исключения:Несколько заводов связи

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.jms.ConnectionFactory org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration.connectionFactory; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.jms.ConnectionFactory] is defined: expected single matching bean but found 2: jmsConnectionFactory,pooledConnectionFactory 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
... 38 more 
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.jms.ConnectionFactory] is defined: expected single matching bean but found 2: jmsConnectionFactory,pooledConnectionFactory 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) 
... 40 more 

Вот конфиг я использую:

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL" value="***" /> 
</bean> 
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop"> 
    <property name="maxConnections" value="10" /> 
    <property name="connectionFactory" ref="jmsConnectionFactory" /> 
</bean> 
<bean id="jmsConfig" 
    class="org.apache.camel.component.jms.JmsConfiguration"> 
    <property name="connectionFactory" ref="pooledConnectionFactory"/> 
    <property name="acknowledgementModeName" value="CLIENT_ACKNOWLEDGE"/>  
    <property name="concurrentConsumers" value="11"/> 
    <property name="maxConcurrentConsumers" value="11"/> 
</bean> 
<bean id="activemq" 
    class="org.apache.activemq.camel.component.ActiveMQComponent"> 
    <property name="configuration" ref="jmsConfig"/> 
</bean> 

Я предполагаю, что проблема заключается в том, что оба этих классов реализовать класс javax.jms.ConnectionFactory и затем они автоматически передаются через ConnectionFactory в org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration. Я что-то пропустил здесь, любая помощь будет принята с благодарностью?

ответ

2

Вы можете установить primary = true на одном из заводских фасонных соединений

Смежные вопросы