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


    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

  • 相关阅读:
    redis+nginx+tomcat故障大全
    Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
    Redis初步认识
    私有IP地址共有三个范围段
    公有云和私有云的区别
    svn安装与其服务器搭建
    datagrid后台分页js
    easyui.dialog.js
    EasyUI 另一种form提交方式
    easyui- grid前台分页
  • 原文地址:https://www.cnblogs.com/yibao/p/13504140.html
Copyright © 2020-2023  润新知