今天在对dubbo后台模块时,使用了spring-security进行访问控制,再调用service层的服务进行用户查询时报了一个错:Duplicate application configs: <dubbo:application name=“dubbo_consumer” id=“dubbo_consumer” /> and <dubbo:application name=“dubbo_provider” id=“dubbo_provider” />,后来才发现原因:一个项目不可以有两个application的name,spring-security中的<dubbo:application name=“xxx” />要和spring-mvc中的<dubbo:application name=“xxx” />相同,否则报错。因为一个消费者配置了两个名字不同的Dubbo消费,就会认为是两个消费者,必然报错,解决办法是让这两个Dubbo中的name属性一致,声明我这是一个消费者。
另:spring-security的基于dubbo的调用服务的配置
......
<beans:bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<!-- 消费方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的(和spring-mvc文件中的相同) -->
<dubbo:application name="tyh-manager-web" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://47.103.4.125:2181"/>
<!-- 要引用的服务 -->
<dubbo:reference id="businessService" interface="tyh.service.BusinessService" />
<beans:bean id="userService" class="tyh.security.impl.IUserServiceImpl">
<beans:property name="businessService" ref="businessService"/>
</beans:bean>
<security:authentication-manager>
<security:authentication-provider user-service-ref="userService">
<security:password-encoder ref="passwordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>