Dubbo 服务无提供者
总结
-
检查 Dubbo Admin 控制台,按接口名称查找是否有提供者
-
检查 Provider 应用代码
-
检查 dubbo-provider.xml 中是否配置对外的RPC接口
-
检查 dubbo-provider.xml 中RPC接口的实现类路径配置是否正确,当将实现类配置为RPC接口路径时报错如下
interface not allowed for non-abstract beans
-
检查 dubbo-provider.xml 是否被 Spring 加载
-
检查 version ,对外提供的版本是否正确
-
检查应用是否挂掉,重启应用后再次调用
Forbid consumer ip access service com.service.provinceService from registry ip use dubbo version x.5.3, Please check registry access list (whitelist/blacklist).
-
-
检查 Consumer 应用代码
- 检查 dubbo-consumer.xml 中配置 Provider.xml 中的 RPC 接口路径及名称是否正确
- 检查 version ,是否是对方提供的版本,如果不同环境使用不同版本号,需要检查是否对应当前应用的环境
-
检查各个应用中是否具有相同ID的Dubbo服务接口
- 举例:应用 A 与 应用C 之间无依赖关系,通过应用 B 中转;将 A 的 RPC 接口配置完全拷贝放置在 B 中,导致 C 无法通过 Dubbo 中配置的 ID 区分该调用哪个接口
- 解决:修改方法:
- 重写接口:相同的接口在不同的项目中添加项目名称作为接口前缀
- 改写引用:修改在配置文件中的id的值,引用时将@Autowired改为@Resource("${id}")
-
新增对外RPC接口时检查
- spring-content.xml 对 dubbo-provider.xml 的引用
- dubbo-provider.xml 中 interface 及 id 的配置
- dubbo-provider.xml 中 serviceImpl 的配置
- Dubbo Admin 是否有新增接口,启动本地应用,是否注册成功