Spring Integration不与FTP主机系统

时间:2016-07-21 11:43:34

标签: spring-integration

我正在尝试将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系统。

谢谢。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

  

从版本4.3开始,假设remote-directory/remote-directory-expression,可以省略null属性。在这种情况下,根据FTP协议,客户端工作目录将用作默认远程目录。

这意味着你应该尝试升级到Spring Integration 4.3并删除那个奇怪的*