2013-10-02 49 views
6

我試圖讓已使用存儲在數據庫中的Spring Batch的相關表作業執行的列表:使用JSON解串器用於批處理作業執行上下文

List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance); 

上述方法調用似乎調用JdbcExecutionContextDao類中的ExecutionContextRowMapper.mapRow方法。

ExecutionContextRowMapper使用com.thoughtworks.xstream.Xstream.fromXML方法反序列化存儲在DB中的JobExecutionContext的JSON字符串。

它看起來像一個不正確的或默認的xml反序列化器用於解組JSON化的JobExecutionContext。 在這種情況下是否有任何配置使用JSON解串器?

回答

3

ExecutionContext的序列化器/反序列化器可以在2.2.x中配置。我們使用ExecutionContextSerializer接口(提供兩個實現,一個使用java序列化,另一個使用您提到的XStream impl)。要配置您自己的序列化程序,您需要實現org.springframework.batch.core.repository.ExecutionContextSerializer並將其注入JobRepositoryFactoryBean(以便正確序列化/反序列化上下文)和JobExplorerFactoryBean(重新排列先前保存的上下文)。

請務必注意,更改序列化方法將阻止Spring Batch對以前保存的ExecutionContexts進行反序列化。

相關問題