首页 > 编程语言 > 详细

springMVC框架整合dubbo微服务项目,使用@Reference注解,出现远程服务NullPointerException异常

时间:2020-08-14 20:35:47      阅读:128      评论:0      收藏:0      [点我收藏+]

1、问题描述:在使用SpringMVC+dubbo+zk+cas搭建微服务项目时,假设项目中有A+B两个服务提供者,有一个web项目。web项目调用B服务,B服务再调用A服务,但是程序一直提示A服务控制针异常。NullPointerException

 

2、问题分析:这里分析一下原因。A B服务此时都是服务的提供者,B是A服务的提供者,他们都是注册到dubbo上的。所以项目发布的时候,无法判断是哪个服务先注册到dubbo上的。而且都是使用dubbo的方式注入,极有可能产生注入服务为Null的情况。

联想到spring中有循环依赖的问题,所以spring框架会提供三级缓存来解决循环依赖,其中涉及到代理类,切面。。等等逻辑

 

3、解决办法:首先先排除@Reference注释引用错【容易有人引用成org.springframework.data.annotation】,正确应该是【import com.alibaba.dubbo.config.annotation.Reference;】;

      排除@Service注释引用错。

      确定引起控制针的原因就是上述问题分析。在dubbo官网,提供了 @Reference(lazy = true),即采用懒加载。这样当服务提供者还没有启动的时候,服务消费者会在对象初始化的时候,创建相应的代理对象,不会产生一个null对象,从而解决dubbo提供者消费者不明确引发的NullPointerException

 

4、详情可参考:http://dubbo.apache.org/zh-cn/docs/user/demos/preflight-check.html

 

springMVC框架整合dubbo微服务项目,使用@Reference注解,出现远程服务NullPointerException异常

原文:https://www.cnblogs.com/yibao/p/13504140.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!