gpt4 book ai didi

java - Spring Integration - FTP 出站网关 LS 在 *unix 上始终为空

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:38 25 4
gpt4 key购买 nike

我有一个简单的 ftp 出站网关,配置为 ls、get、rm

    <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" />

这在我的开发 Windows 盒子上完美运行,连接到多个不同的 FTP 服务器。

我的日志输出预期

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 的回复 channel 始终为空例如

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。

  • 两台 centos 机器位于不同的数据中心

  • 我尝试了多个不同的不相关的 FTP 服务器,结果相同

  • ftp服务器上肯定有文件

  • 可以在 centos 机器上访问 ftp 服务器,使用“ncftp”和“ftp”确认

我知道这篇文章相当含糊,但它让我发疯。任何想法都非常感激

最佳答案

我必须设置<property name="clientMode" value="2" />在我的DefaultFtpSessionFactory

关于java - Spring Integration - FTP 出站网关 LS 在 *unix 上始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com