У меня есть приложение Java, в котором мне нужно иметь возможность подключаться к нескольким (3) системам для чтения сообщений из очереди. Я использую платформу Spring в файле applicationContext.
Я получаю следующее runtimeError:
"Parameter 1 of method jmsListenerContainerFactory in ... required a single bean, but 3 were found"
Я попытался использовать scope = "prototype" на уровне bean-компонента CachedContainerFactory в файле applicationContext, но безуспешно.
Не знаю, как это исправить.
Спасибо.




Мне не удалось воспроизвести вашу ошибку, но я могу без проблем использовать несколько фабрик соединений. В частности, я использую CachingConnectionFactory - я не знаю ни одного CachedContainerFactory, как вы заметили. Вот пример конфигурации XML для 2 VPN:
<bean autowire = "default" class = "org.springframework.jndi.JndiTemplate" id = "v1Template" lazy-init = "default">
<property name = "environment">
<map>
<entry key = "java.naming.provider.url" value = "smf://192.168.65.3:55555"/>
<entry key = "java.naming.factory.initial" value = "com.solacesystems.jndi.SolJNDIInitialContextFactory"/>
<entry key = "java.naming.security.principal" value = "default@v1"/>
</map>
</property>
</bean>
<bean autowire = "default" class = "org.springframework.jndi.JndiTemplate" id = "v2Template" lazy-init = "default">
<property name = "environment">
<map>
<entry key = "java.naming.provider.url" value = "smf://192.168.65.3:55555"/>
<entry key = "java.naming.factory.initial" value = "com.solacesystems.jndi.SolJNDIInitialContextFactory"/>
<entry key = "java.naming.security.principal" value = "default@v2"/>
</map>
</property>
</bean>
<bean autowire = "default" class = "org.springframework.jndi.JndiObjectFactoryBean" id = "v1cf" lazy-init = "default">
<property name = "jndiTemplate" ref = "v1Template"/>
<property name = "jndiName" value = "cf"/>
</bean>
<bean autowire = "default" class = "org.springframework.jndi.JndiObjectFactoryBean" id = "v2cf" lazy-init = "default">
<property name = "jndiTemplate" ref = "v2Template"/>
<property name = "jndiName" value = "cf"/>
</bean>
<bean class = "org.springframework.jms.connection.CachingConnectionFactory" id = "v1ccf">
<property name = "targetConnectionFactory" ref = "v1cf"/>
<property name = "sessionCacheSize" value = "10"/>
</bean>
<bean class = "org.springframework.jms.connection.CachingConnectionFactory" id = "v2ccf">
<property name = "targetConnectionFactory" ref = "v2cf"/>
<property name = "sessionCacheSize" value = "10"/>
</bean>
Дополнительные свойства конфигурации (при подключении к Solace с использованием конфигурации Spring XML) см. В руководство по интеграции.
Похожая проблема была отмечена в другом посте - NoUniqueBeanDefinitionException в конфигурации Spring, управляемой аннотациями.