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

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

内容简介: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.

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

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


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

查看所有标签

猜你喜欢:

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

用户体验的要素

用户体验的要素

Jesse James Garrett / 范晓燕 / 机械工业出版社 / 2007年10月 / 25.00

这不是一本关于“怎样做(How-to)”的书。有很多很多讨论如何建设网站的书,这本不是。 这不是一本关于技术的书。在这里你找不到一行代码。 这不是一本有答案的书。相反,这本书说的是“如何提出正确的问题”。 这本书将告诉你,在你阅读其他书籍的之前,你需要提前了解什么。如果你需要一个大的概念,如果你需要了解用户体验设计师所做出的决策的环境,这本书很适合你。 这本书经过精心设计,......一起来看看 《用户体验的要素》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码