Spring batch spring批处理中步骤间的数据交换
我有一个由以下组件组成的工作Spring batch spring批处理中步骤间的数据交换,spring-batch,Spring Batch,我有一个由以下组件组成的工作 处理步骤-激活一个外部处理,将其结果记录在数据库中,并返回一个内部id,以便我可以获取该id并进一步处理它 日志记录步骤-由包含块的tasklet构建 该区块是由一个条目读取器构建的,我计划使用#{stepExecutionContext['job.id']}作为xml文件中编写的sql的一部分,这样它将获得相关的日志信息 我正在尝试使用此处建议的解决方案,但当我尝试在步骤执行上下文或作业执行上下文上添加属性时,会出现此错误 chunkContext.getStep
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)
我错过什么了吗 ChunkContext提供的StepContext是只读对象;使用
StepExecutionListener
并将作为参数传递的步骤执行上下文保存在方法StepExecutionListener.afterStep(StepExecution StepExecution)
chunkContext.getStepExecutionContext().getStepExecutionContext()中我始终遵循以下路径:
chunkContext
.getStepContext()
.getStepExecution()
.getJobExecution()
.getExecutionContext()
.put("", "");
我在执行put步骤时也遇到了问题。
当它进入下一步时,可能会丢失数据。
不过,我把最后一句话留给最专业的人。请在您的答案上添加一些解释。