2013-10-02 10 views
6

Próbuję uzyskać listę egzekucji pracy, które zostały zapisane w Wiosna wsadowych powiązanych tabel w bazie danych przy użyciu:użycie JSON Deserializator do kontekstu wykonania wsadowym

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

Powyższe wywołanie metody wydaje się powołać Metoda ExecutionContextRowMapper.mapRow w klasie JdbcExecutionContextDao.

ExecutionContextRowMapper używa metody com.thoughtworks.xstream.Xstream.fromXML do deserializacji łańcucha JSON obiektu JobExecutionContext przechowywanego w DB.

Wygląda na to, że niepoprawny lub domyślny deserializator xml jest używany do usuwania JSONified JobExecutionContext. Czy istnieje konfiguracja do użycia deserializera JSON w tym scenariuszu.

Odpowiedz

3

Serializator/deserializator dla ExecutionContext można konfigurować w wersji 2.2.x. Korzystamy z interfejsu ExecutionContextSerializer (dostarczając dwie implementacje, jedną wykorzystującą serializację java i jedną używającą XStream impl wymieniasz). Aby skonfigurować własny serializer, musisz zaimplementować org.springframework.batch.core.repository.ExecutionContextSerializer i wprowadzić go do JobRepositoryFactoryBean (tak, aby konteksty były serializowane/deserializowane poprawnie) oraz JobExplorerFactoryBean (w celu ponownego wykorzystania wcześniej zapisanych kontekstów).

Ważne jest, aby pamiętać, że zmiana metody serializacji uniemożliwi Grupowanie sprężyny przed deserializacją wcześniej zapisanych ExecutionContexts.

Powiązane problemy