zoukankan      html  css  js  c++  java
  • 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.

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

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

  • 相关阅读:
    【Leetcode_easy】922. Sort Array By Parity II
    【Leetcode_easy】925. Long Pressed Name
    【Leetcode_easy】872. Leaf-Similar Trees
    【Leetcode_easy】874. Walking Robot Simulation
    【Leetcode_easy】1128. Number of Equivalent Domino Pairs
    【VxWorks工程】基于opencv创建读取摄像头数据的工程error
    【Leetcode_easy】868. Binary Gap
    【Leetcode_easy】867. Transpose Matrix
    【Leetcode_easy】860. Lemonade Change
    第11章 拾遗5:IPv6和IPv4共存技术(3)_NAT-PT技术【全书完】
  • 原文地址:https://www.cnblogs.com/yougewe/p/6957570.html
Copyright © 2011-2022 走看看