我有一份由以下组件构建的工作
这个块是由一个项目阅读器构建的 - 我计划使用#{stepExecutionContext ['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)
我错过了什么吗?
答案 0 :(得分:3)
ChunkContext提供的StepContext是一个只读对象;使用StepExecutionListener
并保存作为方法StepExecutionListener.afterStep(StepExecution stepExecution)
答案 1 :(得分:0)
chunkContext.getStepContext()。getStepExecutionContext()重新运行副本使用chunkContext.getStepContext()。getStepExecution()。getExecutionContext()
答案 2 :(得分:0)
我总是遵循以下路径:
chunkContext
.getStepContext()
.getStepExecution()
.getJobExecution()
.getExecutionContext()
.put("", "");
我在执行StepExecution时也遇到了问题。 进行下一步时,可能会丢失数据。 但是,我将最后一句话留给最专家。