dubbo 应用既是生产者又是消费者 spring bean id冲突
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
引用来自“是夜色太荒芜”的评论
是因为我把其他提供服务的dubbo应用的实现类也依赖进工程里了,导致ID冲突
我好像知道问题了 duobbo应用依赖其它应用服务时,是不是只需要depence api吧,我把实现类也depence进去乐,是不是冲突了?
是因为我把其他提供服务的dubbo应用的实现类也依赖进工程里了,导致ID冲突
回复
是的,只要接口。
dubbo:reference那个给个id不就完事了。
绝对没问题
是用包扫描的方式扫描注解,实现类上已经写上注解
回复
而且看你的提供者的配置,你的实现类应该是这么配的:@Service("kaUserService")。 这样的话,就和你consumer.xml里的 <dubbo:reference interface="cn.ce.best.member.service.KaUserService" id="kaUserService" init="true"/> 的id冲突了
对 是冲突的问题,本来consumer只需要依赖provider的api就行,我把impl工程也依赖进来了,spring容器实力化impl之后,dubbo再去解析consumer的命名空间后,getAttribute("id")之后,去注册中心中查找,发现重复就抛异常了。
确认两个问题先,你的配置文件里面有没有使用包扫描的方式去扫描注解?KaUserService的实现类上有没有写注解?
引用来自“javageek”的评论
搞两个不同的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
搞两个不同的id就可以了