一场没有序列化引发的血案

博客围绕Java Dubbo接口数据传输问题展开。先分析服务提供方在注册中心的注册情况,发现版本号与客户端配置一致。通过分析RPC接口异常信息,找到关键错误,即DTO未实现Serializable接口。明确问题是dubbo接口数据传输需序列化,解决方法是让返回的DTO实现Serializeable。

分析思路

  1. 先分析了该服务的提供方有没有在注册中心注册,检查后发现有注册,并且版本号与调用的客户端配置的是一样的。
  2.  分析了RPC接口返回的exception 信息 返现了一条关键错误提示:【Caused by: java.lang.IllegalStateException: Serialized class com.xx.dto.DemoDTO must implement java.io.Serializable】
  3. 经过检查返现该DTO没有 实现 Serializable接口。

问题原因

dubbo接口的数据传输需要进行序列化。

解决方法

在服务提供方,返回的DTO implement Serializeable。

报错信息

Caused by: java.lang.IllegalStateException: Serialized class com.xx.dto.DemoDTO must implement java.io.Serializable
    at com.alibaba.com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFactory.java:261)
    at com.alibaba.com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.java:233)
    at com.alibaba.com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:406)
    at com.alibaba.com.caucho.hessian.io.JavaSerializer$FieldSerializer.serialize(JavaSerializer.java:313)
    ... 28 more

 

转载于:https://www.cnblogs.com/luao/p/10824227.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值