前几天对接公司内部其他部门的系统,用dubbo调用,dubbo看起来很简单,但是却让我们调试了好久啊!

  下面是调试纪录:

1. 调用该服务时,直接调不通,查看错误为 no provider ?

  然后就去查看该部门的服务是不是部署了最新的代码,并重新打包部署。

  结果还是不行。然后去查看代码,发现暴露该接口的配置部分,由于某种原因,被注释掉了,哎呀,我去。

  将暴露该接口的配置打开,重新部署,总算可以在dubbo后台看到该服务了。

2. 再次调用该接口,结果报错,不能进行序列化,即提示: no implements Serializable ?

  最后,终于确认,该段代码是不可用的,未继承 Serializable 的接口是不能被调用的。

  然后找相应同事改掉该代码,继承 Serializable 接口,总算可以调通了。

3. 报某字段数据类型非法 Date, java.lang.IllegalAgumentException ?

  java.sql.Date.getMinutes(Date.java: 194)

  最后发现,是该类型将会导致实现端报错,然后该同事再改代码。

4. 我再次调用,然后不报错了,但是我发现我的所有结果都没有了,全部返回null.

  然后,该同事自己写了单元测试用例,调用以后,证明该问题在他那里是不存在的。然后我蒙逼了。

5. 我也写单元测试,直接调用他本地代码,进行断点调试,结果还是不行?

  弄了好久,实在干不动,就去请教高手指导一下。

  确认一下之后,说是没有序列化,可能导致两边无法认为该bean是同一个实例;

  没有使用相同的调用协议,结果证明是相同协议;高手也无解了。

6. 最后,该同事自己解决了该问题,原因为他将之前报错的类型改掉了,但是我作为客户端调用却没有同步更改,从而导致序列化结果不一致,从而解析为null.

  然后,他将该契约包上传到私服,我从私服下载,重新单元测试调用,成功!!!

  虽说最后证明是一个简简单单的问题,但是中途也是很波折啊,记录一下,权当学习了~  纯文字版本,有点难读,但是总体就两个点: 是否序列化了? 是否服务端与客户端使用了相同版本的契约包?

dubbo rpc调用,接收到的bean为null原因?的更多相关文章

  1. dubbo rpc调用抛出的Exception处理

    关于dubbo的Exception堆栈被吃处理,网上已经有比较多的解决方法,在我们的应用场景中,不希望RPC调用对方抛出业务exception,而是通过Resp中的errorCode,errorMsg ...

  2. Dubbo RPC调用参数校验---错误message自动返回

    Dubbo 的RPC调用中Consumer 和 Provider端都可以对调用的方法做传参验证,参数的验证可以通过JSR303规范 (Java Specification Requests) 提到的 ...

  3. [转载] Dubbo实现RPC调用使用入门

    转载自http://shiyanjun.cn/archives/341.html 使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Red ...

  4. 【原】通过Dubbo注解实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下: <?xml version="1.0" encoding ...

  5. Dubbo通过注解实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下:  <?xml version="1.0" encodin ...

  6. Dubbo实现RPC调用使用入门

    使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis.Thrift等等.由于Dubbo将这些协议的实现进行了封装了,无论是服务端( ...

  7. 使用Dubbo实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下: <?xml version="1.0" encoding ...

  8. Dubbo系列(三)dubbo的核心技术--RPC调用

    dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke: 一.RPC协议Protocol(Remote Procedure Call)远程过程调用协议 1.我们 ...

  9. SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是老三,断更了半年,我又滚回来继续写这个系列了,还有人看吗-- 在前面的章 ...

随机推荐

  1. Adreno GPU Profiler

    Adreno GPU Profiler,除了UNITY profiler外的一个备选,似乎不能看CPU,内存?

  2. linux 硬链接 软链接

    硬链接 链接文件的INode和源文件相同,删除互不影响,不支持跨分区,不支持目录 软链接 链接文件有单独的INode,其Block中存储源文件的INode信息,相当于windows中 的快捷方式 ln ...

  3. inline、block与inline-block

    参考了一些资料集其他人的博客,梳理一下inline.block与inline-block三个概念.     高度 宽度 举例 block 在新行上开始 高度,行高以及顶和底边距都可控制 宽度缺省是它的 ...

  4. combox省市县三级联动

    /** * Name 获取省份(初始化) */ function showProvince(id1, id2, id3) { var paramData = {}; $.ajax({ url: osp ...

  5. 手工搭建web项目

    https://www.cnblogs.com/skyblue-li/p/5966311.html

  6. Python设计模式 - UML - 总览

    说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...

  7. 你确定你真的懂Nginx与PHP的交互?

    Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生.PHP也通过二十多年的发展来到了7系列版本,更加关注性能.这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标 ...

  8. Pains and Sickness 学习笔记

    Headaches can be very painful and can last for a long time. If you have a headache, your head hurts. ...

  9. 网络基础-- 之 子网划分 and 一些基础解释

    子网划分的核心思想就是------   借主机为为网络位 最近几天--看了一下今天就分享一波. 首先我们先来理解一下 -----   one. 进制的转换   -----   two. IP地址 -- ...

  10. 微擎开发------day04

    (1) cache_write($key,$data)  按照指定键名缓存数据 cache_write('test', $data) (2) cache_load($key)  读取指定键名的缓存数据 ...