JAVA下FTPClient操作卡死问题分析解决
2017-12-03 23:35
260 查看
最近在做一个FTP数据下载功能,FTP Server由公司另一个项目组提供,本人开发的时候全是基于内网的,FTP Server并非直接使用提供方的,而是本人自己本地搭建的FTP Server,因此无法完全模拟实际情况。测试环境中程序一切正常,但在部署到生产环境的时候发现FTP操作出现不规律的卡死现象,程序运行到 FTPClient.listFiles()就停止不动,程序捕获不到任务异常,就一直卡着,导致轮训工作瘫痪。
为了解决这个问题,我对FTPClient设置了ConnectTimeout、DataTimeout、DefaultTimeout,但是在生产环境中问题依旧存在。又经过一翻研究之后发现,FTPClent需要使用被动模式,在调用FTPClient.listFiles()或FTPClient.retrieveFile()这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,FTPClient告诉FTPServer开通一个端口来传输数据。为什么要这样做呢,因为FTPServer可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
为了解决这个问题,我对FTPClient设置了ConnectTimeout、DataTimeout、DefaultTimeout,但是在生产环境中问题依旧存在。又经过一翻研究之后发现,FTPClent需要使用被动模式,在调用FTPClient.listFiles()或FTPClient.retrieveFile()这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,FTPClient告诉FTPServer开通一个端口来传输数据。为什么要这样做呢,因为FTPServer可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
相关文章推荐
- [JAVA]Apache FTPClient操作“卡死”问题的分析和解决
- Apache FTPClient操作“卡死”问题的分析和解决
- Apache FTPClient操作“卡死”问题的分析和解决
- Java 编程技术中汉字问题的分析及解决,文件操作
- 【Java】解决FTPClient上传中文目录出现中文名乱码问题
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法
- Java 编程技术中汉字问题的分析及解决,文件操作
- Java 编程技术中汉字问题的分析及解决,文件操作
- 关于JAVA httpclient connection reset的问题分析和解决
- java中ftpClient.listFiles()结果为空问题解决方案
- 一个实际问题分析及解决之六:java keystore的操作
- Java 编程技术中汉字问题的分析及解决,文件操作
- Java 编程技术中汉字问题的分析及解决,文件操作
- Java访问数据库的速度瓶颈问题的分析及解决
- java连接操作Oracle出现的问题及解决方法
- Java 编程技术中汉字问题的分析及解决
- 转:Java 编程技术中汉字问题的分析及解决
- Java访问数据库速度瓶颈问题分析解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决(从根源上解决) (转)