0
java.time.Year의 오브젝트를 직렬화 및 비 직렬화하려고하고있는 중에, 직렬화 에러를 발행 해, stackOverflow에 실장합니다.java.time.Year의 헤 시안 직렬화와 직렬화 복원
java.lang.StackOverflowError
at com.caucho.hessian.util.IdentityIntMap.get(IdentityIntMap.java:112)
at com.caucho.hessian.io.Hessian2Output.getRef(Hessian2Output.java:1359)
at com.caucho.hessian.io.WriteReplaceSerializer.writeObject(WriteReplaceSerializer.java:144)
at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465)
at com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:297)
at com.caucho.hessian.io.UnsafeSerializer.writeInstance(UnsafeSerializer.java:216)
at com.caucho.hessian.io.UnsafeSerializer.writeObject(UnsafeSerializer.java:170)
이 오류를 재현하는 샘플 코드는 다음과 같습니다 '년'(org.joda.time.Years) joda 시간
@Test
public void testHessianSerializeDeserialize() throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Hessian2Output out = new Hessian2Output(bos);
out.startMessage();
Year y1 = Year.of(2017);
out.writeObject(y1);
out.completeMessage();
out.close();
byte[] data = bos.toByteArray();
// Deserialize
ByteArrayInputStream bin = new ByteArrayInputStream(data);
Hessian2Input in = new Hessian2Input(bin);
in.startMessage();
Assert.assertEquals(y1, (Year) in.readObject());
in.completeMessage();
in.close();
bin.close();
}