dubbo序列化源码
时间: 2025-02-22 15:02:03 浏览: 58
### Dubbo 序列化源码解析
Dubbo 的序列化机制位于 `org.apache.dubbo.common.serialize` 包下。主要类包括:
- **Serialization**: 接口定义了序列化和反序列化的标准操作。
- **ObjectOutput/ObjectInput**: 定义对象写入和读取的具体实现。
对于 FastJSON 和 Hessian2 这两种不同的序列化方式,对应的实现类分别为:
#### FastJson 实现
FastJSON 是默认的序列化器,在 3.2 版本中被设置为默认选项[^1]。其核心逻辑由 `com.alibaba.fastjson.JSON` 类处理。
```java
public class FastjsonSerialization extends AbstractSerialization {
@Override
protected ObjectOutput createOutputStream(OutputStream out) throws IOException {
return new FastjsonObjectOutput(out);
}
@Override
protected ObjectInput createInputStream(InputStream in) throws IOException {
return new FastjsonObjectInput(in);
}
}
```
#### Hessian2 实现
Hessian2 提供了一种二进制协议来优化网络传输效率。当配置文件指定了 `prefer-serialization: hessian2` 后,将会启用该序列化模式。
```java
public class Hessian2Serialization extends AbstractSerialization {
@Override
public byte getContentTypeId() {
return CONTENT_TYPE_HESSIAN2;
}
@Override
public String getContentType() {
return MIME_APPLICATION_HESSIAN2;
}
@Override
protected ObjectOutput createOutputStream(OutputStream out) throws IOException {
return new Hessian2ObjectOutput(out);
}
@Override
protected ObjectInput createInputStream(InputStream is) throws IOException {
return new Hessian2ObjectInput(is);
}
}
```
在遇到未注册异常的情况下,切换到 Hessian2 可以有效解决问题,因为 Hessian2 对于自定义类型的兼容性更好。
为了确保安全性并允许特定类进行反序列化,可以在配置文件中指定白名单路径 `security/serialize.allowlist` 或者调整安全策略模式[^2]。
阅读全文
相关推荐



















