localdate - 黑森州本地日期
问题描述
我正在尝试使用 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);
}
}
这是输出
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) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) at com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:299) at 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 仍然是进行远程呼叫的“好”解决方案,还是我应该切换到不同的协议?
解决方案
推荐阅读
- python - Django:同一张桌子上的多个模型
- javascript - 引用对象的键作为变量 - js
- javascript - 无法在 Meteor React 中设置未定义的属性 fullcalendar
- java - 如何使用我的 Apple Developer ID 签署 .jar 文件
- python - Django 应用程序生命周期
- python - 函数返回的数组在调用之间改变了大小
- java - new SimpleDateFormat("hh:mm a", Locale.getDefault()).parse("04:30 PM") giving Unparseable exception
- php - Algolia 过滤器不适用于对象数组
- python - 根据 dict 选择 Pandas 数据框的行
- python - csv字典在多次循环时不会重置到开头