2016-07-21 9 views
1

ローカルディレクトリでFTPフォルダを同期させようとしています。このFTPサーバーはz/OS上で実行されています。MVSオペレーティング・システムを備えたメインフレームです。春の統合がFTPメインフレームシステムと同期しない

これまで私は、このシステムには「通常の」フォルダーシステムがないため、必要なフォルダーに接続することにも多くの問題がありました。

これは私が私のファイルがある作業ディレクトリに変更するために何をやったかである:

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

これはいかがですか?

バージョン4.3からは、nullと仮定すると、remote-directory/remote-directory-expressionの属性を省略することができます。この場合、FTPプロトコルに従って、クライアントの作業ディレクトリがデフォルトのリモートディレクトリとして使用されます。

つまり、Spring Integration 4.3にアップグレードし、その奇妙な*を削除する必要があります。

+0

魅力的に機能しました!ありがとうございました! – Frank

関連する問題