Spring batch 尽管已配置失败元素,但为什么重新启动失败的作业失败?

Spring batch 尽管已配置失败元素,但为什么重新启动失败的作业失败?,spring-batch,Spring Batch,当作业在某个步骤中失败时,我尝试配置重启能力,然后在修复问题后,它应该能够在重启时从失败的步骤继续。但事实并非如此。请在下面找到我的代码。我错过了什么 <job id="OneJob" xmlns="http://www.springframework.org/schema/batch" restartable="true"> <listeners> <listener ref="jobStatusListener" /> </listeners>

当作业在某个步骤中失败时,我尝试配置重启能力,然后在修复问题后,它应该能够在重启时从失败的步骤继续。但事实并非如此。请在下面找到我的代码。我错过了什么

<job id="OneJob" xmlns="http://www.springframework.org/schema/batch" restartable="true">
<listeners>
<listener ref="jobStatusListener" />
</listeners>

<step id="aA" next="bB">
 <tasklet>
     <chunk commit-interval="1000" reader="o_reader" writer="o_writer" />
 </tasklet>
<listeners> <listener ref="stStepListener" /> </listeners>
</step>

<step id="bB" parent="aA">
 <tasklet>
   <chunk commit-interval="1000" reader="t_reader" writer="t_writer" />
</tasklet>
<fail on="FAILED" exit-code="EARLY TERMINATION"/>  
<next on="*" to="cC"/>       
<listeners> <listener ref="stStepListener" /> </listeners>
</step>

<step id="cC">
 <tasklet>
   <chunk commit-interval="1000" reader="th_reader" writer="th_writer" />
 </tasklet>
<listeners> <listener ref="stStepListener" /> </listeners>
</step>
</job>
解决问题后,当我使用相同的作业参数重新启动时,它将失败并将状态存储为

BATCH_JOB_EXECUTION.STATUS= FAILED  
BATCH_JOB_EXECUTION.EXIT_CODE=EARLY TERMINATION
BATCH_JOB_EXECUTION.STATUS= FAILED  
BATCH_JOB_EXECUTION.EXIT_CODE=FAILED 
我认为例外情况如下

org.springframework.batch.core.JobExecutionException:流执行意外结束

at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:140)
at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:304)
at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128)
at com.one.batch.oneBatchStarter.main(oneBatchStarter.java:33)
原因:org.springframework.batch.core.job.flow.FlowExecutionException:结束流=状态为oneJob的oneJob=oneJob.aA,出现异常

at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:174)
at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)
at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)
... 5 more



Caused by: com.thoughtworks.xstream.converters.ConversionException: Cannot construct java.util.Map$Entry : java.util.Map$Entry : Cannot construct java.util.Map$Entry : java.util.Map$Entry
 ---- Debugging information ----
message             : Cannot construct java.util.Map$Entry : java.util.Map$Entry
cause-exception     : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message       : Cannot construct java.util.Map$Entry : java.util.Map$Entry
class               : java.util.Map$Entry
required-type       : java.util.Map$Entry
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /map/map/entry
line number         : -1
class[1]            : java.util.HashMap
converter-type[1]   : com.thoughtworks.xstream.converters.collections.MapConverter
version             : 1.4.7
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
at com.thoughtworks.xstream.converters.collections.MapConverte

你能提供完整的堆栈跟踪吗?请用完整的堆栈跟踪编辑你的原始问题。是否可以按照spring批处理文档重新启动失败的作业?是。如果某个作业失败并被配置为可重启(默认),那么您可以再次启动同一个作业实例。我在eclipse中执行并重新执行它。我想那可能是我不能成功的原因。所以现在我在命令行中尝试使用CommandLineRunner和restart参数。但它在重新启动失败的作业时再次失败。您能否建议配置中可能出现的错误?