我有一个Java应用程序,需要在其中连接到多个(3)系统以从队列中读取消息。 我在applicationContext文件中使用Spring框架。
我正在跟踪runtimeError:
"Parameter 1 of method jmsListenerContainerFactory in ... required a single bean, but 3 were found"
我尝试在applicationContext文件的CachedContainerFactory bean级别上使用scope =“ prototype”,但是没有运气。
不确定如何解决此问题。
谢谢。
答案 0 :(得分:0)
我无法重现您的错误,但是我可以使用多个连接工厂而不会出现问题。具体来说,我使用CachingConnectionFactory
-如您所述,我不知道有任何CachedContainerFactory
。这是2个VPN的XML配置示例:
<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>
有关其他配置属性(如果使用Spring XML配置连接到Solace),请参阅integration guide。
在另一则帖子NoUniqueBeanDefinitionException in Spring annotation driven configuration中也提到了类似的问题。