dubbo启动顺序问题

本文解决了一个Dubbo 2.5.4中关于check属性的问题,当consumer先于provider启动时,服务调用会报空指针异常。文章深入分析了问题原因,并给出了升级至2.5.6版本后的解决方案,同时提醒注意protocol参数的使用。

  之前使用dubbo2.5.4的时候一直有个问题:服务启动的时候,如果是先启动consumer后启动provider,则通过@Referrence获取的service会报空指针异常。而先启动provider后启动consumer服务可以正常访问,网上说设置check属性为false,但试过了无效。

网上很多人说可以,但自己的项目就是不行,跟了一下dubbo的源码。

先启动consumer,后启动provider,在启动provider的时候,通过consumer的日志看到zookeeper确实向consumer发送注册信息了,

但是在ReferenceConfig类中发现一个不太对劲的参数:

图中的check属性就是在@Referrence中设置的check参数,自己明明设了false,到了这里却变成了null,还设成了true。

这情况说明了自己设的check属性是没用的。

最后google发现这是dubbo2.5.4的一个bug,在2.5.6版本修复了,将dubbo的版本换成2.5.6后,再跟一次源码

这样能取到check的值了,服务也能正常获取。

另:在更换dubbo版本的时候还出了一个小问题:如果provider的配置@Service上使用了protocol = “dubbo” 参数,启动时会报 No bean named 'dubbo' available 的错。

把 protocol = “dubbo” 去掉就好了,网上说2.5.6版本的dubbo支持多协议,但为什么不能指定协议了,这个问题有待探讨。

转载于:https://www.cnblogs.com/jagerLan/p/10475671.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值