Проблема метода получения файлов Apache Commons Net FTPClient со Sterling Commerce Connect - PullRequest
0 голосов
/ 18 февраля 2010

Мы использовали Apache Commons Net FTP классы для подключения через прокси к FTP-шлюзу Sterling Commerce, расположенному за пределами нашей сети, для получения файлов. Мы не перечисляем файлы, так как мы знаем имя файла, который нужно извлечь, поэтому мы извлекаем его напрямую, используя метод ниже.

логическое значение isTransferred = ftp.retrieveFile (remoteFileName, outputFile);

Это работает с 3 лет, и мы столкнулись с проблемами с прошлых 2 недель. Ошибка возникает в строке выше и составляет

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)

Мы сталкиваемся с этими проблемами периодически, начиная с последних 2 недель, и не уверены, что может быть их причиной. Ничего не изменилось с обеих сторон. Есть идеи, в чем может быть проблема?

Спасибо, Ravi

1 Ответ

3 голосов
/ 19 мая 2010

FTPClient использует «активный режим» по умолчанию, что проблематично, так как требует, чтобы FTP-клиент открыл порт для FTP-сервера для подключения обратно. Использование пассивного режима должно обойти эту проблему. После подключения и входа в систему добавьте следующую строку в свой код FTP.

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

Это должно решить вашу проблему.

...