2016-12-27 8 views
0

私は、JsonResouurceAsyncPagingItemReaderのSpringバッチプロジェクトを持っています。カスタムはItemReaderで、Webサービスから非同期にデータを取得します。SpringバッチカスタムItemReaderが開かない

このカスタムItemReaderは、ExecutorServiceを使用して、Webサービスへの呼び出しを送信します。しかし、私はそれを初期化するのに問題があります。

AbstractItemCountingItemStreamItemReaderで提供されるdoOpenメソッドで初期化しようとしましたが、doOpenが呼び出されていないようです。

ItemReader は、このようにスプリングによって注入されている:

@Bean 
@JobScope 
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun, 
     @Value("#{jobParameters['codInt']}") Long codInt) { 

    Map<String, Object> parameterValues = new HashMap<String, Object>(); 
    if (lastRun != null) { 
     parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat)); 
    } 
    if (codInt != null) { 
     parameterValues.put("codInt", codInt); 
    } 

    JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>(); 
    reader.setHttpUrl(server + pathTemplate); 
    reader.setRestTemplate(restTemplate); 
    reader.setParameterValues(parameterValues); 
    reader.setPageSize(pageSize); 

    return reader; 
} 

そしてさらに、このようなStepで使用:

@Bean 
public Step importProductStep() { 
    return stepBuilderFactory.get("importProductJobStep") 
      .<Map<String, Object>, Product>chunk(1000) 
      .reader(reader(null, null)) 
      .processor(processor()) 
      .writer(writer()) 
      .build(); 
} 

間違っている可能性が何上の任意のアイデア?

答えて

1

ItemStreamまたはItemStreamWriterを返すと、正常に動作します。
Look at this ticket

+0

ありがとうございました!戻り値の型をItemReaderからItemStreamReaderに変更し、完璧に機能しました。 – gantzer89

関連する問題