2014-06-05 54 views
1

我有內置以下組分在彈簧分批交換步驟之間數據

  1. 加工步驟的作業 - 激活該記錄它的結果在DB,並返回一個內部ID所以我的外部處理可以利用這個ID和進程進一步
  2. 登錄步驟 - 建立一個tasklet的,包含塊

組塊建造的項目讀者 - 我計劃將使用#{步執行上下文[「job.id」]}寫在XML文件,因此將獲得相關的日誌信息的SQL部分

我試圖與解決方案合作建議在這裏 - 11.8 Passing Data to Future Steps,但我得到這個錯誤當我嘗試在步執行上下文作業執行上下文

chunkContext.getStepContext().getStepExecutionContext().put("job.id", jobId); 

添加一個屬性,我得到這個錯誤:

java.lang.UnsupportedOperationException: null 
at java.util.Collections$UnmodifiableMap.put(Collections.java:1342) 
at ... 
at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:395) 

我錯過了什麼嗎?

回答

3

ChunkContext提供的StepContext是一個只讀對象;使用StepExecutionListener並保存作爲參數傳入的步驟執行上下文,方法爲StepExecutionListener.afterStep(StepExecution stepExecution)