Dubbo使用-关于接口参数是Date日期类型问题

Dubbo服务提供者在接收Date类型参数时,总是获取到当前日期而非消费者传递的值。原因是Dubbo的hessian序列化默认使用Date.toString(),格式与反序列化不匹配。解决方法包括更改参数类型或自定义序列化配置,如使用String或Long传输日期,或者自定义Dubbo序列化配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题:

Dubbo服务提供者的一个参数是Date类型,当服务消费者传参调用时发现接收到的参数始终是当前日期,而不是消费者传过来的值。

那么问题原因是什么:

Dubbo默认的序列化框架hessian在序列化参数时默认调用Date的toString方法,然后反序列化时通过默认格式yyyy-MM-dd HH:mm:ss 来解码出date日期数据。源码如下:

 /**
     * Converts this <code>Date</code> object to a <code>String</code>
     * of the form:
     * <blockquote><pre>
     * dow mon dd hh:mm:ss zzz yyyy</pre></blockquote>
     * where:<ul>
     * <li><tt>dow</tt> is the day of the week (<tt>Sun, Mon, Tue, Wed,
     *     Thu, Fri, Sat</tt>).
     * <li><tt>mon</tt> is the month (<tt>Jan, Feb, Mar, Apr, May, Jun,
     *     Jul, Aug, Sep, Oct, Nov, Dec</tt>).
     * <li><tt>dd</tt> is the day of the month (<tt>01</tt> through
     *     <tt>31</tt>), as two decimal digits.
     * <li><
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值