我有一个配置如下的项目编写器,它生成一个 xml:
<beans:bean id="delegateItemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter" scope="step">
<beans:property name="resource" value="file:#{jobParameters['OutputDirPath']}${myFileName}" />
<beans:property name="overwriteOutput" value="true"/>
<beans:property name="rootTagName" value="disclosure-feed" />
<beans:property name="rootElementAttributes" >
<beans:map>
<beans:entry key="xmlns:xsi" value="http://www.w3.org/2001/XMLSchema-instance" />
<beans:entry key="xsi:noNamespaceSchemaLocation" value="XYZ.xsd"/>
</beans:map>
</beans:property>
<beans:property name="marshaller" ref="xmlMarshaller" />
</beans:bean>
即使每件事看起来都是正确的,有时在修复先前运行失败后重新启动作业时,我会收到以下错误:
2013-07-19 02:14:34,921 [main] ERROR org.springframework.batch.core.step.AbstractStep - Encountered an error executing the step
org.springframework.batch.item.ItemStreamException: File is not writable: [/myOutputDir/myOutput.xml]
当我从 batch_ 表中手动删除作业条目以便作业从头开始而不是从上次运行期间失败的位置重新开始时,文件会按预期生成。
这个问题的原因是什么?如何解决?是否有一些我缺少的配置内容?
谢谢阅读!