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

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

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

最新文章

  1. 梦想还是要有的-纪念正式成为csdn博客专家暨年中总结
  2. 【原】如何在jQuery中实现闭包
  3. 68 id -显示用户的id
  4. SQL Access Advisor
  5. 四则运算(2)之软件单元测试:Right-BICEP
  6. 让AllocateHwnd接受一般函数地址作参数
  7. 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
  8. bzoj2011: [Ceoi2010]Mp3 Player
  9. UVA 11090 - Going in Cycle!!(Bellman-Ford)
  10. HR系统邮件审批功能总结
  11. libc.so.6重做链接,删除导致的缺失问题(后期需要深入研究),未能成功升级
  12. 有趣的8个IT冷知识
  13. (Java学习笔记) Java Threading (Java线程)
  14. SEL_CallFuncN,SEL_CallFuncO等的区别
  15. C++:(拷贝,继承,智能指针)练习
  16. android屏幕页面实现滚动,页面跳转
  17. python中Requests模块中https请求在设置为忽略有效性验证,屏蔽告警信息的方式
  18. jquery弹出层开源框架layer
  19. ajax常用请求方式
  20. C#天气预报程序

热门文章

  1. Intersect交集Except差集Union并集实例
  2. [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."
  3. T-codes & Rarely Seen Tables(Updated from previous note)
  4. [leetcode]90. Subsets II数组子集(有重)
  5. SpringAOP日志配置
  6. http协议和四个层之间的关系
  7. CentOS_mini下安装docker 之 安装docker CE
  8. MAC系统上不能调试华为手机
  9. dbus 消息和消息总线实例讲解-一
  10. Scanner 随机数