问题现象

使用Hessian作为RPC框架传输数据,发现消费者收到的BigDecimal字段为0,而实际提供者返回的值非0。

解决方案

在消费者和提供者模块的src/main/resource/META-INF/hessian下:

增加serializers文件支持序列化

1
java.math.BigDecimal=com.caucho.hessian.io.StringValueSerializer

增加deserializers文件支持反序列化

1
java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer

参考资料

0003920: BigDecimal objects are incorrectly serialized - Mantis
BigDecimal value is always zero when transfered with spring remoting via hessian