我正在尝试将FTP文件夹与本地目录进行同步。这个FTP服务器在z / OS上运行,它是一个带有MVS操作系统的大型机。
到目前为止,即使设法连接到我需要的文件夹,我也遇到了很多问题,因为这个系统没有“普通”文件夹系统。
这是我改为我的文件所在的工作目录所做的工作:
public class DefaultFtpHostSessionFactory extends DefaultFtpSessionFactory {
protected void postProcessClientAfterConnect(FTPClient ftp) throws IOException {
ftp.changeToParentDirectory();
ftp.changeWorkingDirectory("E377D.");
}
}
现在我已经定义了一个输入通道适配器:
<int-ftp:inbound-channel-adapter
id="ljFtpInbound"
channel="ljFtpChannel"
session-factory="ljCachingSessionFactory"
auto-create-local-directory="true"
delete-remote-files="false"
filename-pattern="*"
remote-directory="*"
remote-file-separator=""
charset="UTF-8"
auto-startup="true"
preserve-timestamp="false"
local-filename-generator-expression="#this.toUpperCase()"
temporary-file-suffix=".writing"
local-directory="/tmp/">
<int:poller fixed-rate="1000" />
</int-ftp:inbound-channel-adapter>
你可以注意到远程目录是“*”,这是列出目录的,至少是我设法做到的唯一方法。
但是当FtpInboundFileSynchronizer尝试同步文件夹时,我收到错误,因为当它尝试复制文件时,路径是用以下内容构建的:
String remoteFilePath = remoteDirectoryPath + remoteFileSeparator + remoteFileName;
在我的情况下,“ASTERISK”+“BLANK”+“REMOTE_FILE_NAME”,因为我必须使用“*”作为远程目录,所以它找不到该文件。
¿你知道我是否不能设置远程目录(我试过但没有实现)?或者还有另一种方法来同步这个奇怪的FTP系统。
谢谢。
答案 0 :(得分:0)
这个怎么样?
从版本4.3开始,假设
remote-directory/remote-directory-expression
,可以省略null
属性。在这种情况下,根据FTP协议,客户端工作目录将用作默认远程目录。
这意味着你应该尝试升级到Spring Integration 4.3并删除那个奇怪的*
。