package common.serializer.myserializer; import com.caucho.hessian.io.HessianInput; import com.caucho.hessian.io.HessianOutput; import common.exception.SerializeException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; /** * @ClassName HessianSerializer * @Description Hessian序列化 * @Author Tong * @LastChangeDate 2024-11-29 11:49 * @Version v5.0 */ public class HessianSerializer implements Serializer { @Override public byte[] serialize(Object obj) { // 使用 ByteArrayOutputStream 和 HessianOutput 来实现对象的序列化 try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { HessianOutput hessianOutput = new HessianOutput(byteArrayOutputStream); hessianOutput.writeObject(obj); // 将对象写入输出流 return byteArrayOutputStream.toByteArray(); // 返回字节数组 } catch (IOException e) { throw new SerializeException("Serialization failed"); } } @Override public Object deserialize(byte[] bytes, int messageType) { // 使用 ByteArrayInputStream 和 HessianInput 来实现反序列化 try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes)) { HessianInput hessianInput = new HessianInput(byteArrayInputStream); return hessianInput.readObject(); // 读取并返回对象 } catch (IOException e) { throw new SerializeException("Deserialization failed"); } } @Override public int getType() { return 3; } @Override public String toString() { return "Hessian"; } }