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.
然后,他将该契约包上传到私服,我从私服下载,重新单元测试调用,成功!!!
虽说最后证明是一个简简单单的问题,但是中途也是很波折啊,记录一下,权当学习了~ 纯文字版本,有点难读,但是总体就两个点: 是否序列化了? 是否服务端与客户端使用了相同版本的契约包?
最新文章
- 梦想还是要有的-纪念正式成为csdn博客专家暨年中总结
- 【原】如何在jQuery中实现闭包
- 68 id -显示用户的id
- SQL Access Advisor
- 四则运算(2)之软件单元测试:Right-BICEP
- 让AllocateHwnd接受一般函数地址作参数
- 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
- bzoj2011: [Ceoi2010]Mp3 Player
- UVA 11090 - Going in Cycle!!(Bellman-Ford)
- HR系统邮件审批功能总结
- libc.so.6重做链接,删除导致的缺失问题(后期需要深入研究),未能成功升级
- 有趣的8个IT冷知识
- (Java学习笔记) Java Threading (Java线程)
- SEL_CallFuncN,SEL_CallFuncO等的区别
- C++:(拷贝,继承,智能指针)练习
- android屏幕页面实现滚动,页面跳转
- python中Requests模块中https请求在设置为忽略有效性验证,屏蔽告警信息的方式
- jquery弹出层开源框架layer
- ajax常用请求方式
- C#天气预报程序
热门文章
- Intersect交集Except差集Union并集实例
- [maven] ";Dynamic Web Module 3.0 requires Java 1.6 or newer."; OR ";JAX-RS (REST Web Services) 2.0 requires Java 1.6 or newer.";
- T-codes &; Rarely Seen Tables(Updated from previous note)
- [leetcode]90. Subsets II数组子集(有重)
- SpringAOP日志配置
- http协议和四个层之间的关系
- CentOS_mini下安装docker 之 安装docker CE
- MAC系统上不能调试华为手机
- dbus 消息和消息总线实例讲解-一
- Scanner 随机数