Проблема с методом получения файла Apache Commons Net FTPClient в Sterling Commerce Connect

Мы использовали классы 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 недель и не уверены, что может быть основной причиной этого. Ничего не изменилось с обеих сторон. Есть идеи, в чем может быть проблема?

Спасибо, Рави.


person ravi shankar    schedule 18.02.2010    source источник


Ответы (1)


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

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

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

person nanda    schedule 18.05.2010