我正在使用Asynch jobLaucher来启动 spring 批处理作业 . 我尝试并行执行相同的工作,但似乎第二次启动工作对第一份工作造成了副作用 . (似乎第一个作业的step_output的值被第二个作业覆盖 . 如果我使用Synch JobLauncher,一切都很好 .

我的问题是 . 我可以用以下方式使用jobContext吗?

MyTaskLetStep(实现StepExecutionListener):

public void beforeStep(StepExecution stepExecution) {
        JobExecution jobExecution = stepExecution.getJobExecution();
        ExecutionContext jobContext = jobExecution.getExecutionContext();
       ...
        jobContext.put("step_output" ,outList);  
        ...
   }

已开始乔布斯看起来像这样:

<batch:job id="TACKJob" restartable="true" incrementer="runIdIncrementer" parent="joblistenerjob"> 
    <batch:step id="F1" next = "F2">
        <batch:tasklet ref="N_COMMAND"/> 
    </batch:step>       
    <batch:step id="F2">
        <batch:tasklet ref="Z_COMMAND"/> 
    </batch:step>       
</batch:job>

引用的tasklet bean是原型范围的bean . 他们实现了引用的StepExecutionListener .

你对这个问题有什么建议吗?

谢谢