Both of these writer are pointing to same output file.
This won't work. Each file should have exactly one associated ItemWriter. However, there should be no problem sending both objects to the same ItemWriter.
Now in write method if i try to open the related writers, write the data and try to close the writers, i am getting error something like 'writer already closed'.
This seems fine in principle, so it must be an issue with your code. The write() method will be like this:
Code:
int fileNumber = 0;
write(List<? extends MyDTO> items) {
for(MyDTO item : items) {
FlatFileItemWriter<Object> w = new FlatFileItemWriter<Object>();
w.setResource(baseFilename + (++fileNumber));
w..... //set other properties
w.open(new ExecutionContext());
for(AttribsA a : item.getAttribsA()) {
w.write(a);
}
w.write(item.getAttribB());
w.close();
}
}