微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

黑森州的本地日期

如何解决黑森州的本地日期

我正在尝试使用 com.caucho.Hessian 序列化 java.time.LocalDate,但出现 StackOverflowError。

这是演示我的问题的示例代码

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.time.LocalDate;

import org.junit.jupiter.api.Test;

import com.caucho.hessian.io.Hessian2Input;
import com.caucho.hessian.io.Hessian2Output;

public class LocalDateTest {

   @Test
   public void testHessianSerialization() throws IOException {
      LocalDate original = LocalDate.Now();
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      Hessian2Output output = new Hessian2Output(os);
      output.writeObject(original);
      output.close();

      ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
      Hessian2Input input = new Hessian2Input(in);
      LocalDate copy = (LocalDate) input.readobject();
      assertEquals(original,copy);
  }
}

这是输出

java.lang.StackOverflowError 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 com.caucho.hessian.io.WriteReplaceSerializer.writeReplace(WriteReplaceSerializer.java:184) 在 com.caucho.hessian.io.WriteReplaceSerializer.writeObject(WriteReplaceSerializer.java:155) 在 com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) 在 com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:299) 在 com.caucho.hessian.io.UnsafeSerializer.writeInstance(UnsafeSerializer.java:218) 在 com.caucho.hessian.io.UnsafeSerializer.writeObject(UnsafeSerializer.java:172) 在 com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) 在 com.caucho.hessian.io.WriteReplaceSerializer.writeObject(WriteReplaceSerializer.java:167) 在 com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) 在 com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:299) 在 com.caucho.hessian.io.UnsafeSerializer.writeInstance(UnsafeSerializer.java:218) 在 com.caucho.hessian.io.UnsafeSerializer.writeObject(UnsafeSerializer.java:172)

我在其他线程中发现了对这个问题的引用,但除了添加您自己的序列化程序之外没有真正的解决方案。

我使用的是去年 12 月发布的 Hessian 4.0.65 版;我本来希望它现在支持 java.time.LocalDate 。有谁知道为什么不是这样?

Hessian 仍然是远程调用的“好”解决方案,还是我应该切换到不同的协议?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。