Hession是一个支持跨语言传输的二进制序列化协议,相对于Java默认的序列化机制,Hessian具有更好的性能与易用性,而且支持多种不同的语言。其中,AbstractSerializerFactory、AbstractHessianOutput、AbstractSerializer、AbstractHessianInput、AbstractDeserializer是Hessian实现序列化和反序列化的核心类。
示例代码如下:
package ares.remoting.framework.serialization.serializer.impl;
import ares.remoting.framework.serialization.serializer.ISerializer;
import com.caucho.hessian.io.HessianInput;
import com.caucho.hessian.io.HessianOutput;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
/**
* @author fuss created on 18/7/23.
* @version $Id$
*/
public class HessianSerializer implements ISerializer {
public byte[] serialize(Object obj) {
if (obj == null)
throw new NullPointerException();
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
HessianOutput ho = new HessianOutput(os);
ho.writeObject(obj);
return os.toByteArray();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public <T> T deserialize(byte[] data, Class<T> clazz) {
if (data == null)
throw new NullPointerException();
try {
ByteArrayInputStream is = new ByteArrayInputStream(data);
HessianInput hi = new HessianInput(is);
return (T) hi.readObject();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Hessian Maven依赖配置如下:
<!-- hession -->
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.38</version>
</dependency>