zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    win10 访问共享缺少 SMB1协议
    H3C 设置用户和密码
    vim 注释和删除多行
    工商银行贵金属网址
    Team Foundation Server 2008 安装 全程记录
    临时表和表变量 区别
    Windows Server 2003开机自动登录
    索引工作原理
    WebService是什么
    CodeFirst
  • 原文地址:https://www.cnblogs.com/yibao/p/13504140.html
Copyright © 2011-2022 走看看