dubbo 应用既是生产者又是消费者 spring bean id冲突

是夜色太荒芜 发布于 2017/08/21 18:58
阅读 3K+
收藏 0

service-security-provider应用有provider和consumer配置文件

其中secutrity-consumer引用两个服务

	 <dubbo:reference interface="cn.ce.best.member.service.KaUserService" id="kaUserService" init="true"/> 
	 <dubbo:reference interface="cn.ce.best.member.service.KaMenuService" id="kaMenuService" init="true"/>

这两个服务是另一个应用service-member-provider提供的,代码如下

    <dubbo:service interface="cn.ce.best.member.service.KaUserService" ref="kaUserService"/>
    <dubbo:service interface="cn.ce.best.member.service.KaMenuService" ref="kaMenuService"/>

启动service-security-provider报如下错误(已排除serviceImpl 的id重复)

Caused by: java.lang.IllegalStateException: Duplicate spring bean id kaUserService
	at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:106)
	at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:77)
	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:185)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
	... 23 more

 

加载中
0
codinggg
codinggg

搞两个不同的id就可以了

是夜色太荒芜
是夜色太荒芜
id 改成kaUserServiceTest后,又报错服务未提供 Caused by: java.lang.IllegalStateException: Failed to check the status of the service cn.ce.best.member.service.KaUserService. No provider available for the service cn
0
是夜色太荒芜
是夜色太荒芜

引用来自“javageek”的评论

搞两个不同的id就可以了

ID本来就不相同

0
MnameHZJ
MnameHZJ

确认两个问题先,你的配置文件里面有没有使用包扫描的方式去扫描注解?KaUserService的实现类上有没有写注解?

是夜色太荒芜
是夜色太荒芜
对 是冲突的问题,本来consumer只需要依赖provider的api就行,我把impl工程也依赖进来了,spring容器实力化impl之后,dubbo再去解析consumer的命名空间后,getAttribute("id")之后,去注册中心中查找,发现重复就抛异常了。
MnameHZJ
MnameHZJ
回复 @是夜色太荒芜 : 而且看你的提供者的配置,你的实现类应该是这么配的:@Service("kaUserService")。 这样的话,就和你consumer.xml里的 <dubbo:reference interface="cn.ce.best.member.service.KaUserService" id="kaUserService" init="true"/> 的id冲突了
是夜色太荒芜
是夜色太荒芜
是用包扫描的方式扫描注解,实现类上已经写上注解
是夜色太荒芜
是夜色太荒芜
绝对没问题
0
francis-x
francis-x

dubbo:reference那个给个id不就完事了。

francis-x
francis-x
回复 @是夜色太荒芜 : 是的,只要接口。
是夜色太荒芜
是夜色太荒芜
我好像知道问题了 duobbo应用依赖其它应用服务时,是不是只需要depence api吧,我把实现类也depence进去乐,是不是冲突了?
0
是夜色太荒芜
是夜色太荒芜

是因为我把其他提供服务的dubbo应用的实现类也依赖进工程里了,导致ID冲突

0
是夜色太荒芜
是夜色太荒芜

引用来自“是夜色太荒芜”的评论

是因为我把其他提供服务的dubbo应用的实现类也依赖进工程里了,导致ID冲突

BINGO

返回顶部
顶部