У меня есть требование записать xml-файл на сервер sftp в приложении Spring Batch. В настоящее время приведенный ниже код записывает XML-файл в локальную файловую систему, используя StaxEventItemWriter. Мне нужно написать напрямую на удаленный сервер вместо того, чтобы записать его на локальный сервер, а затем перейти на сервер sftp. Ссылался на эту ссылку ( Запись в удаленный файл с использованием конфигурации Java-интеграции Spring Integrations Sftp Streaming ), но не уверен, как писать с использованием объекта ресурса StaxEventItemWriter / setup с удаленным файлом
public void write(List<? extends UserDTO> items) throws Exception {
for(UserDTO item : items) {
StaxEventItemWriter<UserDTO> staxWriter = getStaxEventItemWriter(item);
staxWriter.write(Arrays.asList(item));
}
}
private StaxEventItemWriter<UserDTO> getStaxEventItemWriter(UserDTO user) {
String key = user.getDomain();
StaxEventItemWriter<UserDTO> writer = writers.get(key);
if (writer == null) {enter code here
writer = new StaxEventItemWriter<>();
try {
UrlResource resource = new UrlResource("file:"+outputDir+"/"+key+"_"+fileName+".xml");
writer.setResource(resource);
writer.setRootTagName("customerSet");
Jaxb2Marshaller UserMarshaller = new Jaxb2Marshaller();
UserMarshaller.setClassesToBeBound(UserDTO.class);
writer.setMarshaller(UserMarshaller);
writer.setOverwriteOutput(Boolean.TRUE);
writer.open(executionContext);
} catch (MalformedURLException e) {
e.printStackTrace();
}
writers.put(key, writer);
}
return writer;
}