apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.48k stars 26.43k forks source link

hessian序列化怎么新增自己的Serializer和Deserializer #6298

Closed kiss-keray closed 4 years ago

kiss-keray commented 4 years ago

Environment

Steps to reproduce this issue

  1. 目前设置的Serializer在我使用mybatisPlus时,不能序列化Wrapper对象,我需要自己实现关于wrapper对象的序列化和反序列化。但是通过源码看到com.alibaba.com.caucho.hessian.io.SerializerFactory没有提供外部新增Serializer和Deserializer,就算有个com.alibaba.com.caucho.hessian.io.SerializerFactory#addFactory方法,但是SerializerFactory在com.alibaba.com.caucho.hessian.io.AbstractHessianOutput对象里,不属于配置属性,在项目里无法拿到实例。也就是这个addFactory方法根本没啥用。要想添加自己的Serializer和Deserializer需要向上重写很多类很麻烦。

Expected Result

在com.alibaba.com.caucho.hessian.io.SerializerFactory的_staticSerializerMap,_staticSerializerMap,_staticTypeMap初始化能不能读取SPI扩展,这样就能很方便的新增自己的Serializer和Deserializer

zjseu commented 4 years ago

Hessian2SerializerFactory.SERIALIZER_FACTORY使用这个Factory然后调用其addFactory方法

kiss-keray commented 4 years ago

Hessian2SerializerFactory.SERIALIZER_FACTORY使用这个Factory然后调用其addFactory方法

我把org.apache.dubbo.common.serialize.hessian2的4个类复制出来改了0.0,没注意到那个静态变量