1

ls、get、rm 用に構成された単純な ftp 送信ゲートウェイがあります。

    <int-ftp:outbound-gateway id="gatewayLS" 
    cache-sessions="false" 
    session-factory="incomingCachingSessionFactory"
    request-channel="inboundChannel" 
    command="ls" 
    command-options="-1" 
    expression="'${ftp.pull.remote.directory}'"
    reply-channel="toSplitter" />

<channel id="toSplitter">
    <interceptors>
        <wire-tap channel="logger" />
    </interceptors>
</channel>

<logging-channel-adapter id="logger"
    log-full-message="true" level="DEBUG" />

<splitter id="splitter" input-channel="toSplitter"
    output-channel="toGet" />

<int-ftp:outbound-gateway id="gatewayGET"
    cache-sessions="false"
    local-directory="${ftp.pull.local.directory}"
    session-factory="incomingCachingSessionFactory" 
    request-channel="toGet"
    reply-channel="downloadedFileChannel" 
    command="get" 
    command-options="-P"
    expression="headers['file_remoteDirectory'] + '/' + payload" />

これは、複数の異なる FTP サーバーに接続して、私の開発用 Windows ボックスで完全に機能します。

そして私のログ出力が期待される

DEBUG: org.springframework.integration.ftp.session.DefaultFtpSessionFactory - Connected to server [ftp.domain.com:21]
DEBUG: org.springframework.integration.ftp.gateway.FtpOutboundGateway - handler 'org.springframework.integration.ftp.gateway.FtpOutboundGateway#0' sending reply Message: [Payload=[test_file.zip]][Headers={timestamp=1343143242030, id=56758ef9-57e5-43d6-b8b7-c36539d9fd0d, file_remoteDirectory=/images/}]

「サーバーに接続」と「返信メッセージの送信」の間の時間もほぼ瞬時です

ただし、2 台の Centos サーバー (5.8 および 6.2) に展開されると、LS の応答チャネルは常に空になります。

DEBUG: org.springframework.integration.ftp.session.DefaultFtpSessionFactory - Connected to server [ftp.domain.com:21]
DEBUG: org.springframework.integration.ftp.gateway.FtpOutboundGateway - handler 'org.springframework.integration.ftp.gateway.FtpOutboundGateway#0' sending reply Message: [Payload=[]][Headers={timestamp=1343143961046, id=31759d6f-201e-4028-8943-0a68ae64db81, file_remoteDirectory=/images/}]

「サーバーに接続しました」から「返信メッセージを送信する」までの時間も異常に長いです。

いくつかの詳細情報:

  • 3台のマシンはすべてmavenを使用して、同じコードベースからWARを構築しています。

  • 2 つの centos マシンは異なるデータセンターにあります

  • 複数の無関係な FTP サーバーを試しましたが、結果は同じでした

  • ftpサーバーには間違いなくファイルがあります

  • ftp サーバーは、「ncftp」および「ftp」を使用して確認された、centos ボックスでアクセス可能です。

この投稿がかなり漠然としていることは知っていますが、それは私を狂わせています。どんな考えでも大歓迎です

4

1 に答える 1

1

私は自分で設定<property name="clientMode" value="2" />しなければなりませんでしたDefaultFtpSessionFactory

于 2012-07-24T22:36:30.390 に答える