HSF 序列化不可变集合类型问题原因分析
Source :
mp.weixin.qq.com
本文分析了在使用 HSF 服务时,因使用 Java 9 的不可变集合(如 Set.of())作为参数导致服务端反序列化失败的问题。根本原因在于 HSF 默认使用的 Hessian2 序列化机制不支持 Java 默认序列化中通过 writeReplace 和 readResolve 实现的不可变集合序列化逻辑:HSF 仅序列化非 transient 字段,而 CollSer 中存储元素的 array 字段为 transient,未被正确序列化,导致反序列化时 array 为 null,抛出 InvalidObjectException: null array 异常。最终解决方案是避免使用不可变集合,改用可变集合(如 HashSet)。