7

以下を使用して、データベースのSpringバッチ関連テーブルに保存されているジョブ実行のリストを取得しようとしています:

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

上記のメソッド呼び出しは JdbcExecutionContextDao クラスの ExecutionContextRowMapper.mapRow メソッドを呼び出しているようです。

ExecutionContextRowMapper は、com.thoughtworks.xstream.Xstream.fromXML メソッドを使用して、DB に格納されている JobExecutionContext の JSON 文字列をデシリアライズします。

JSON化されたJobExecutionContextのアンマーシャリングに、不適切またはデフォルトのxmlデシリアライザが使用されているようです。このシナリオで JSON デシリアライザーを使用する構成はありますか。

4

1 に答える 1

4

ExecutionContext のシリアライザー/デシリアライザーは、2.2.x で構成可能です。インターフェイスを使用しExecutionContextSerializerます(2つの実装を提供します。1つはJavaシリアル化を使用し、もう1つはあなたが言及したXStream implを使用します)。独自のシリアライザーを構成するには、 を実装して(コンテキストが正しくシリアライズ/デシリアライズされるように) および(以前に保存されたコンテキストを再 シリアライズするために)org.springframework.batch.core.repository.ExecutionContextSerializerに注入する必要があります。JobRepositoryFactoryBeanJobExplorerFactoryBean

シリアル化方法を変更すると、Spring Batch が以前に保存されたExecutionContexts.

于 2013-10-02T22:19:47.477 に答える