与Comling Commerce Connect的Apache Commons Net FTPClient retrievefile方法问题

时间:2010-02-18 12:04:35

标签: ftp apache-commons connect commerce

我们一直在使用apache commons net FTP类来使用代理连接到位于我们网络外部的Sterling商务FTP网关来提取文件。我们不列出文件,因为我们知道要提取的文件的名称,所以我们使用下面的方法直接提取它。

boolean isTransferred = ftp.retrieveFile(remoteFileName,outputFile);

自3年以来一直在运作,自过去两周以来我们一直面临着问题。错误发生在上面的行,是

org.apache.commons.net.ftp.FTPConnectionClosedException:收到FTP响应421。服务器关闭连接。 org.apache.commons.net.ftp.FTP .__的getreply(FTP.java:347) org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:450) org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:478) org.apache.commons.net.ftp.FTPClient openDataConnection (FTPClient.java:476) org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1228)

自从过去两周以来,我们间歇性地面对这些问题,并且不确定它可能是什么原因。任何一方都没有改变。任何想法可能是什么问题?

谢谢, 拉维

1 个答案:

答案 0 :(得分:3)

FTPClient默认使用“活动模式”,这是有问题的,因为它需要FTP客户端打开FTP服务器连接回来的端口。使用被动模式应该避免这个问题。连接并登录后,在FTP代码中添加以下行。

FTPClient ftp = new FTPClient();
// connect and login code here
ftp.enterLocalPassiveMode();

这可以解决您的问题。