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

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

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

dubbo rpc调用,接收到的bean为null原因?的更多相关文章

  1. dubbo rpc调用抛出的Exception处理

    关于dubbo的Exception堆栈被吃处理,网上已经有比较多的解决方法,在我们的应用场景中,不希望RPC调用对方抛出业务exception,而是通过Resp中的errorCode,errorMsg ...

  2. Dubbo RPC调用参数校验---错误message自动返回

    Dubbo 的RPC调用中Consumer 和 Provider端都可以对调用的方法做传参验证,参数的验证可以通过JSR303规范 (Java Specification Requests) 提到的 ...

  3. [转载] Dubbo实现RPC调用使用入门

    转载自http://shiyanjun.cn/archives/341.html 使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Red ...

  4. 【原】通过Dubbo注解实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下: <?xml version="1.0" encoding ...

  5. Dubbo通过注解实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下:  <?xml version="1.0" encodin ...

  6. Dubbo实现RPC调用使用入门

    使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis.Thrift等等.由于Dubbo将这些协议的实现进行了封装了,无论是服务端( ...

  7. 使用Dubbo实现RPC调用

    启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下: <?xml version="1.0" encoding ...

  8. Dubbo系列(三)dubbo的核心技术--RPC调用

    dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke: 一.RPC协议Protocol(Remote Procedure Call)远程过程调用协议 1.我们 ...

  9. SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是老三,断更了半年,我又滚回来继续写这个系列了,还有人看吗-- 在前面的章 ...

随机推荐

  1. Android中五大字符串总结(String、StringBuffer、StringBuilder、Spanna

    https://www.aliyun.com/jiaocheng/2861.html?spm=5176.100033.1.35.2ed56b03CbsYFK 摘要:String.StringBuffe ...

  2. 史上最坑 idea 更改代码不生效

    原来, 如果本地多次调整过系统时间,那么gradle 的缓存 会缓存 你的 上次编译时间再未来,那么你再怎么编译,都很难生效,即使删除了生成的字节码目录. 然后invalidate caches/re ...

  3. WM-结汇

    PI发给客户以后, 客户打过来定金之后. 把PI的 P单词去掉,改为只剩invoice, 再把PI改成一份contract为标题的文件,两份文件都是要自己和客户的签字的. 然后需要用这两份文件进行结汇 ...

  4. Aspose.word

    http://my.oschina.net/dancefires/blog/217858

  5. 安装fftw到window(vs2010)及使用fftw库函数实现4096点fft变换计算

    Windows下FFTW库的安装: 1. 从网站http://www.fftw.org/install/windows.html上下载最新的预编译文件:    32-bit version: fftw ...

  6. [leetcode]236. Lowest Common Ancestor of a Binary Tree二叉树最近公共祖先

      Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. Accordi ...

  7. C++静态库与动态库(比较透彻)

    这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自 ...

  8. Alpha 冲刺 (9/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...

  9. 数据库-SQL语句:删除和修改语句-列类型-列约束

    使用MySQL客户端连接服务器的两种方式: (1)交互模式: ——查 mysql.exe  -h127.0.0.1  -uroot  -p mysql   -uroot (2)脚本模式:——增删改 m ...

  10. CentOS查找目录或文件

    查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查找关键字 -print 如果需要更进一步的了解,可以参看Linux的命令 ...