1、同时配置了XML和properties文件,则properties中的配置无效
只有XML没有配置时,properties才会生效
2、dubbo默认会在启动时检查依赖是否可用,不可用就抛出异常,阻止spring初始化完成,check属性默认为true
测试环境下有些服务不关心或出现了循环依赖,将check设置为false
3、为了方便开发测试,线下有一个所有服务可用的注册中心,这时,如果有一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行
让服务提供者开发者,只订阅服务,而不注册正在开发的服务,通过直连测试正在开发的服务。设置dubbo:registry标签register属性为false
4、spring 2.x初始化死锁的问题
事件:在spring解析到dubbo:service时,就已经向外暴露了服务,而spring还在接着初始化其他bean,如果这时有请求进来,并且服务的实现类里有调用applicationContext.getBean()的方法,getBean线程和spring初始化线程的锁的顺序不一样,导致了线程死锁,不能提供服务,启动不了;
解决:不要在服务的实现类中使用applicationContext.getBean()如果不想依赖配置顺序,可以将dubbo:provider的deplay属性设置为-1,使dubbo在容器初始化完成后再暴露服务
5、服务注册不上
- 检查dubbo的jar包有没有在classpath中,以及有没有重复的jar包
- 检查暴露服务的spring配置有没有被加载
- 在服务提供者机器上测试与注册中心的网络是否可以ping通
6、出现RpcException:No provider available for remote service异常
这个异常表示没有可用的服务提供者;
- 检查连接的注册中心是否正确
- 到注册中心查看相应的服务提供者是否存在
- 检查服务提供者是否正常运行
7、出现“消息发送失败”异常
通常是接口方法的传入传出参数未实现Serializable接口