У меня есть приложение Spring, которое хранит несколько объектов времени Java 8 в JobExecutionContext. Я использую сериализатор по умолчанию для моего JobRespository. Я сталкиваюсь с исключениями при анализе данных, которые записываются в таблицу BATCH_STEP_EXECUTION_CONTEXT. У меня есть LocalDateTime, что в настоящее время хранится в виде:Проблемы с периодической сериализацией Spring с пакетом времени Java 8
{
"@resolves-to": "java.time.Ser",
"byte": [5,
8,
18,
8,
45,
50],
"int": [2015,
10000000]
}
Это приводит к исключению при попытке чтения из предыдущих данных JobExecution:
Caused by: java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer
at com.thoughtworks.xstream.core.util.CustomObjectInputStream.readInt(CustomObjectInputStream.java:144) ~[xstream-1.4.8.jar:1.4.8]
at java.time.LocalDate.readExternal(LocalDate.java:2070) ~[na:1.8.0_45]
at java.time.LocalDateTime.readExternal(LocalDateTime.java:2002) ~[na:1.8.0_45]
at java.time.Ser.readInternal(Ser.java:259) ~[na:1.8.0_45]
at java.time.Ser.readExternal(Ser.java:246) ~[na:1.8.0_45]
at com.thoughtworks.xstream.converters.reflection.ExternalizableConverter.unmarshal(ExternalizableConverter.java:167) ~[xstream-1.4.8.jar:1.4.8]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.8.jar:na]
... 97 common frames omitted
Я использую Весна-пакет 3.0.5. ВЫПУСК. Я также попытался перейти на последние версии xstream (1.4.8) и Jettison (1.3.7), но я получаю то же исключение.
Это похоже на известную проблему с XStream (link). Было предложено зарегистрировать собственный конвертер в XStream. Однако весенняя партия не подвергает действительный объект XStream, чтобы зарегистрировать конвертер. Любые предложения о том, как действовать?
вы добавляете аннотацию @EnableBatchProcessing в классе конфигурации? –