【发布时间】:2019-01-04 12:43:10
【问题描述】:
我需要在 Spring Batch 应用程序中将 xml 文件写入 sftp 服务器。目前下面的代码使用 StaxEventItemWriter 将 xml 文件写入本地文件系统。我需要直接写入远程服务器,而不是将其写入本地然后移动到 sftp 服务器。引用此链接 (Writing to a remote file using Spring Integrations Sftp Streaming java configuration) 但不确定如何使用带有远程文件的 StaxEventItemWriter/setup Resource 对象进行编写
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;
}
【问题讨论】:
-
您是否尝试在您的
UrlResource定义中使用ftp:而不是file:?我指的是这个:docs.spring.io/spring/docs/current/spring-framework-reference/…. -
UrlResource 似乎不支持 sftp
标签: java spring spring-integration spring-batch spring-integration-sftp