將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
。
任何幫助我如何減少連接超時?
提到的常見問題解答問題及回答說:'因爲共享網絡的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具有相同的依賴版本,ear文件包含正確的jar。 – stracktracer
這真的很奇怪,因爲這應該工作...你嘗試從Eclipse下簡單的'公共靜態無效的主要(字符串[] args)'方法連接?也許問題出在應用程序服務器上:它可能會提供舊版本的Commons Net庫,並且您部署的應用程序可能會從那裏使用FTPClient ... – Yura