FTP入站通道适配器FTP问题

时间:2014-10-29 14:12:52

标签: spring-integration

我们的项目我们使用ftp:inbound-channel-adapter从FTP服务器轮询文件。工作正常。但是在轮询之间无法正常工作。当我看到FTP服务器日志时,我看到" 425无法打开数据连接。"现在,当我重新启动或停止并再次启动ftp:inbound-channel-adapter时,它的轮询正常。这个问题反复出现以解决我需要停止/启动ftp:inbound-channel-adapter.ftp:inbound-channel-adapter正在linux OS中运行。

使用spring-integration 3只是为了更清楚我已经包含了xsd信息 (弹簧一体化-3.0.xsd,弹簧集成-FTP-3.0.xsd)

我需要为FTP设置任何特定的客户端模式,即Active(本地/远程)/ Passive(本地/远程)等? 低于我的ftp:inbound-channel-adapter配置

<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
        <property name="host" value="abcd.com"/>
        <property name="port" value="21"/>
        <property name="username" value="userid"/>
        <property name="password" value="password"/>
    </bean>

<int-ftp:inbound-channel-adapter id="ftpInbound"
                channel="ftpChannel"
                session-factory="ftpClientFactory"
                auto-create-local-directory="true"
                delete-remote-files="true"
                remote-directory="/"  
                local-filename-generator-expression="new java.text.SimpleDateFormat('yyyy-MM-dd-hhmmssSSS').format(new java.util.Date()) + '.'+ #this"  
                local-directory="${ftp.sync.folder}"
                remote-file-separator="/">
    </int-ftp:inbound-channel-adapter>

所以不确定我能在FTP服务器上做些什么。但是我想看看ftp中是否有任何选项:inbound-channel-adapter或者你建议的任何东西,以便每当FTP服务器抛出时#34; 425 Can& #39; t打开数据连接。&#34;而不是手动停止/启动ftp:inbound-channel-adapter是否有任何选项或自动方式使其工作。谢谢

添加了有关spring集成版本和ftp会话工厂的信息。

1 个答案:

答案 0 :(得分:2)

有两种方法可以连接到FTP服务器主动和被动模式。

ActiveMode:FTP服务器必须与客户端提到的端口建立数据连接 (防火墙问题如果防火墙阻塞了端口,您将收到425数据连接错误)

Passivemode:客户端必须与FTP服务器提到的端口建立数据连接。 (在客户端没有公平问题。我们也可以在FTP服务器中配置passvieports并使这些端口不被FTP服务器防火墙阻止。)

如果未在ftpsessionfactory中指定任何clientmode,则默认为Active模式,即clientMode = 0。 所以我有防火墙问题导致425数据连接问题。我关闭防火墙后工作得很好。所以现在我改变了我的FTPsessionfactory使用Passivemode所以FTP服务器从不关心客户端防火墙

<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
        <property name="host" value="abcd.com"/>
        <property name="port" value="21"/>
        <property name="username" value="userid"/>
        <property name="password" value="password"/>
<!-- 2  passive mode -->
<property name="clientMode" value="2"/>
</bean>

这种方式从不关心客户端的防火墙。 关于FTP http://slacksite.com/other/ftp.html

的非常好的帖子