hessian       

hessian

序列化,记录变量名、类型、长度

反序列化,如果找不到类型,就使用MapDeserializer

/**
 * Reads the object as a map.
 */
public Object readMap(AbstractHessianInput in, String type)
  throws HessianProtocolException, IOException
{
  Deserializer deserializer = getDeserializer(type);

  if (deserializer != null)
    return deserializer.readMap(in);
  else if (_hashMapDeserializer != null)
    return _hashMapDeserializer.readMap(in);
  else {
    _hashMapDeserializer = new MapDeserializer(HashMap.class);

    return _hashMapDeserializer.readMap(in);
  }
}

如果找得到类型,使用UnsafeDeserializer

protected Deserializer getDefaultDeserializer(Class cl)
{
  if (InputStream.class.equals(cl))
    return InputStreamDeserializer.DESER;
  
  if (_isEnableUnsafeSerializer) {
    return new UnsafeDeserializer(cl, _fieldDeserializerFactory);
  }
  else
    return new JavaDeserializer(cl, _fieldDeserializerFactory);
}

image-20230924224021760