We have a problem with CompositeItemWriter. In particular, we can not handle restart.
Following an error, the table is stored BATCH_STEP_EXECUTION_CONTEXT only the outcome of writing the second file itemWriterFile2
(in the field SHORT_CONTEXT is enhanced with {"map":{"entry":[{"string":"FlatFileItemReader.read.count","int":37 },{"string":"FlatFileItemWriter.written","long":2} ,{"string":"FlatFileItemWriter.current.count","lon g":98}]}})
The outcome of writing the first file is stored where itemWriterFile1?
The configuration of the job is as follows:
ThanksCode:<b:job id="loaderJob" job-repository="jobRepository" restartable="true"> <b:step id="loaderStep"> <b:tasklet transaction-manager="batchTransactionManager"> <b:chunk reader="loaderReader" processor="loaderProcessor" writer="itemWriterComposite" commit-interval="1"> <b:streams> <b:stream ref="fileItemReader"/> <b:stream ref="itemWriterFile1"/> <b:stream ref="itemWriterFile2"/> </ b:streams> </ b:chunk> </ b:tasklet> </ b:step> </ b:job> <bean id="itemWriterComposite" class="org.springframework.batch.item.support.CompositeItemWriter"> <property name="delegates"> <list> <ref bean="itemWriterFile1" /> <ref bean="itemWriterFile2" /> </list> </property> </bean> <bean id="itemWriterFile1" class="com.write.ItemFile1" > <property name="delegate"> <bean class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="file:target/test-outputs/output1.txt" /> <property name="lineAggregator"> <bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" /> </property> </bean> </property> </bean> <bean id="itemWriterFile2" class="com.write.ItemFile2" > <property name="delegate"> <bean class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="file:target/test-outputs/output2.txt" /> <property name="lineAggregator"> <bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" /> </property> </bean> </property> </bean>


Reply With Quote