При использовании ftpClient.connect
с существующим хостом, у которого нет службы ftp, время ожидания происходит только через 5 минут, что слишком много.Установка таймаута подключения для FtpClient
Я пробовал устанавливать различные таймауты (setDefaultTimeout, setDataTimeout), которые ничего не меняли.
FtpClient
унаследовал от SocketClient
, у которого есть метод setConnectTiemout, но когда я использую это, я получаю java.lang.NoSuchMethodError: org/apache/commons/net/ftp/FTPClient.setConnectTimeout
при запуске. Похоже, что это связано с некоторой совместимостью J2SW 1.2, как описано в Commons-net FAQ:
В: Как установить тайм-аут соединения? http://wiki.apache.org/commons/Net/FrequentlyAskedQuestions
Они предлагают реализовать собственные объекты SocketFactory
с расширенным классом Socket с использованием определенного тайм-аута. Однако при попытке использовать ftpClient.setSocketFactory
я также получаю java.lang.NoSuchMethodError
.
Любая помощь, как уменьшить таймаут соединения?
Упомянутого FAQ вопрос и ответ говорит, что: 'Так как Commons Net 1.2.x имеет J2SE требование 1,2 совместимости, в том возможность указывать тайм-аут соединения не включается. ', что означает, что библиотеки Commons Net 1.2.x не имеют желаемой функциональности. Вам нужна именно эта старая версия библиотеки? В противном случае попробуйте новую или новую версию, например. Commons Net 3.1 - там '' FTPClient'' метод 'setConnectTimeout' делает именно то, что вам нужно, как указано в ответах ниже. – Yura
Я использую FTPClient 3.1, мой Eclipse не показывает ошибок, но после развертывания на сервере приложений он дает указанные ошибки. Mavne build pom.xml имеет идентичную версию зависимостей, а файл уха содержит правильную банку. – stracktracer
Это действительно странно, так как это должно работать ... Вы пытались подключиться с помощью простого метода public public void main (String [] args) 'из под Eclipse? Возможно, проблема заключается в сервере приложений: она может предоставить более старую версию библиотеки Commons Net, и ваше развернутое приложение может использовать FTPClient оттуда ... – Yura