ftp之FTPConnectionClosedException解决
Posted onftp关闭异常总结
使用apache的ftp时,在数据量大的时候,在后台会报异常
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
错误原因大致有三种:
1.FTP服务器服务有故障,或是是网络问题。
- FTP response 421 received. Server closed connection.//错误原因就是FTP服务器端连接数满了。
- FTP服务器自动断开链接时间过长的闲置ftp链接。
解决办法:
1.FTP服务器(这里测试的环境是XP IIS的FTP)的连接数,如果客户端采用多线程访问FTP,可能会 421错误。需要查看连接FTP的Java代码,FTP连接是否已经正常释放掉了,可以考虑将ftp服务端的最大链接数设置大一些。
2.设置的连接超时和数据传输超时值太小。
例如,设置为60秒:
ftpClient.setSocketTimeout(60*000); //设置传输超时时间为60秒
ftpClient.setConnectTimeout(60*000); //连接超时为60秒
apache的默认是-1,即永不超时。如果你没有显式设置超时值,缺省值为-1。
3.有可能是服务器自动断开连接。这种情况需要在程序中使用ftp操作的地方实例化ftpClient,使用过后及时disconnect掉,下次使用再实例化一个ftpClient。其中disconnect建议在try块的finally中使用(防止logout异常而不执行disconnect)。