2014-10-17 61 views
2

我想知道如何指定我想第二個作業輸出的數據由第一份工作被附加到數據輸出:追加數據

JOB1 --->數據1 --->輸出的XML文件

作業2 --->數據2 --->相同的輸出XML文件

但是當我打開輸出XML我只找到數據2

我想找到這樣的:


輸出文件


數據1

數據2

我怎麼能在春天配置此批。謝謝

回答

1

我推測你使用的是StaxEventItemWriter。有一個屬性overwriteOutput設置爲true。如果此值設置爲true,則它將覆蓋該文件(如果存在)。將其設置爲false,並將其添加到現有文件(該標誌在重新啓動時將被忽略)。您可以在javadoc中閱讀更多關於此標誌的信息:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/xml/StaxEventItemWriter.html#setOverwriteOutput-boolean-

+1

當我將此屬性設置爲false時,異常會引發org.springframework.batch.item.ItemStreamException:文件已存在:[C:\ Users \ XXX \ xml \ outputs \ DonneesFactureFromDB.xml] THEN nullPointerException – Siho 2014-10-17 16:53:38

+0

Yes I' m使用org.springframework.batch.item.xml.StaxEventItemWriter – Siho 2014-10-17 17:03:48

+0

請使用其他任何想法嗎? – Siho 2014-10-20 09:08:05

0

我想共享配置以供參考。

<bean id="xmlItemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter"> 
     <property name="resource" value="file:outputs/test.xml" /> 
     <property name="encoding" value="ISO-8859-1" /> 
     <property name="version" value="1.0" /> 
     <property name="marshaller" ref="reportMarshaller" /> 
     <property name="rootTagName" value="record" /> 

     <!-- TRUE means, that output file will be overwritten if exists - default is TRUE --> 
     <property name="overwriteOutput" value="true" /> 
    </bean> 

如果設置<property name="overwriteOutput" value="false" />那麼如果test.xml已經存在於outputs目錄,那麼它會,如果你做的工作的重啓給錯誤。如果作業沒有重新啓動,那麼它會附加到XML文件。