dubbo rpc调用,接收到的bean为null原因?

栏目: 服务器 · 发布时间: 6年前

内容简介:dubbo rpc调用,接收到的bean为null原因?

前几天对接公司内部其他部门的系统,用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.

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解C#(第3版)

深入理解C#(第3版)

斯基特 (Jon Skeet) / 姚琪琳 / 人民邮电出版社 / 2014-4-1 / 99.00元

本书是世界顶级技术专家“十年磨一剑”的经典之作,在C#和.NET领域享有盛誉。与其他泛泛介绍C#的书籍不同,本书深度探究C#的特性,并结合技术发展,引领读者深入C#的时空。作者从语言设计的动机出发,介绍支持这些特性的核心概念。作者将新的语言特性放在C#语言发展的背景之上,用极富实际意义的示例,向读者展示编写代码和设计解决方案的最佳方式。同时作者将多年的C#开发经验与读者分享,读者可咀其精华、免走弯......一起来看看 《深入理解C#(第3版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具