FTPClient.listFiles() 放到linux上,返回值爲null或數組長度爲0

在項目中使用commons-net-1.4.1.jar實現FTP文件的下載,在windows xp上運行正常,可是放到linux上,卻出現問題,程序運行到 FTPClient.listFiles()或者FTPClient.retrieveFile()方法時,就中止在那裏,什麼反應都沒有,出現 假死狀態。linux

google一把,發現不少人也出現了此類問題,最終在一個帖子裏找到了解決辦法。在調用這兩個方法以前,調用 FTPClient.enterLocalPassiveMode();這個方法的意思就是每次數據鏈接以前,ftp client告訴ftp server開通一個端口來傳輸數據。爲何要這樣作呢,由於ftp server可能每次開啓不一樣的端口來傳輸數據,可是在linux上,因爲安全限制,可能某些端口沒有開啓,因此就出現阻塞。OK,問題解決。 web

另外,若是程序部署在weblogic上, 也有可能出現一些問題,爲何,由於weblogic本身也有commons-net包,若是weblogic的jar包版本低於你使用的版本,就設置weblogic 的classpath,優先加載工程裏的jar包。
相關文章
相關標籤/搜索