Настройка Spring Batch Java - запись в удаленный XML-файл sftp без локального файла - PullRequest
0 голосов
/ 04 января 2019

У меня есть требование записать 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;
}

1 Ответ

0 голосов
/ 04 января 2019

Вероятно, вы можете попытаться использовать SftpResource , основанный на Spring Integration (аналогично решению, указанному в общей ссылке), и использовать его в своем StaxEventItemWriter.

...