私は、いくつかのJava 8時間オブジェクトをJobExecutionContextに格納するSpringバッチアプリケーションを持っています。私は自分のJobRespositoryにデフォルトのシリアライザを使用しています。私は、BATCH_STEP_EXECUTION_CONTEXTテーブルに書き込まれているデータを解析する際に例外に直面しています。私は以前JobExecutionデータから読み取るしようとすると、これは例外につながるバグのシリアル化の問題Java 8のタイムパッケージの問題
{
"@resolves-to": "java.time.Ser",
"byte": [5,
8,
18,
8,
45,
50],
"int": [2015,
10000000]
}
:
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を使用しています私はとして格納されているのLocalDateTimeを持っています。リリース。私はxstream(1.4.8)とJettison(1.3.7)の最新バージョンへのアップグレードも試みましたが、同じ例外があります。
これはXStream(link)の既知の問題のようです。提案はXStream内にカスタムコンバータを登録することでした。ただし、spring-batchはコンバータを登録するために実際のXStreamオブジェクトを公開しません。どのように進むべきかについての提案はありますか?
@EnableBatchProcessingアノテーションを設定クラスに追加しましたか? –