2014-06-05 28 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)