Debug记录 - taotao项目 - FTPClient对象 storeFile方法 很慢 上传文件大小为 0
2017-02-23 18:29
169 查看
使用FTPClient做FTP上传,由quartz来定时运行(2分钟一次),之前在生产环境调试没问题,一些时间后现场反馈不能上传了,当出现10个扫描文件的日志后就不再出现了(扫描文件日志为每次运行任务前先扫描指定目录并输出需要上传的文件件数 ),后来发现因为quartz在这种配置下,默认同任务线程池最多只启动10个线程,由此可见是因为之前的任务并没有运行结束,按照正常,这个任务完全可以在1,2秒内运行完。
经过多次跟踪,发现问题出在上传文件那个过程。storeFile这个方法得不到服务端的响应,导致程序一直僵死。
从FTP服务器上的日志看到客户端正常登录,切换二进制模式,上传文件都正常,就是上传的文件大小永远都是0。询问现场在之前联调成功后修改过什么配置没,对方表示未修改过。后来想了想,FTP有两种模式:主动模式,被动模式;关于两种模式的区别可以网上搜一下。而FTPClient默认使用主动模式,将其改为被模式后一切正常,由此可见在上次联调成功后,现场对网络相关配置(例如防火墙规则)做过修改,导致主动模式不能正常上传文件了。
除此之外,还有一种情况,手工使用ftp命令或工具上传成功,但使用程序则不行,有可能是windows等开发环境操作系统防火墙阻止了程序的这种操作,可将防火墙关闭以验证是否此原因导致。
经过多次跟踪,发现问题出在上传文件那个过程。storeFile这个方法得不到服务端的响应,导致程序一直僵死。
从FTP服务器上的日志看到客户端正常登录,切换二进制模式,上传文件都正常,就是上传的文件大小永远都是0。询问现场在之前联调成功后修改过什么配置没,对方表示未修改过。后来想了想,FTP有两种模式:主动模式,被动模式;关于两种模式的区别可以网上搜一下。而FTPClient默认使用主动模式,将其改为被模式后一切正常,由此可见在上次联调成功后,现场对网络相关配置(例如防火墙规则)做过修改,导致主动模式不能正常上传文件了。
除此之外,还有一种情况,手工使用ftp命令或工具上传成功,但使用程序则不行,有可能是windows等开发环境操作系统防火墙阻止了程序的这种操作,可将防火墙关闭以验证是否此原因导致。
相关文章推荐
- FTPClient 上传文件调用storeFile方法SocketException问题
- org.apache.commons.net.ftp.FTPClient上传文件大小改变的解决方法
- java 用FTPClient上传文件,执行this.ftpClient.storeFile(fileName, inStream)报错
- 用FTPClient上传文件,执行this.ftpClient.storeFile(fileName, inStream)报错
- FTPClient ftp.storeFile上传文件时服务器无响应的原因
- FtpClient.storeFile返回false解决方法
- windows mobile 6.3 FTP FtpGetFileSize 取得文件大小为0xFFFFFFFF 解决方法
- 在项目中根据配置文件路径生成File对象的方法
- ASP.NET FileUpload上传图片方法并解决上传文件大小
- ajax利用html5新特性带进度条上传文件 html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法
- 上传文件至FTP---通过FileUtils.writeByteArrayToFile()方法
- 【FTP】java FTPClient 文件上传内容为空,文件大小为0
- 读取本地文件理解FileReader对象的方法和事件以及上传按钮的美化。
- 郁闷N天了,IDFTP发生10054错误后无法继续上传文件,重新创建IDFTP后发生错误:550 cannot create file。请教解决方法
- ASP.NET中用HttpPostedFile.SaveAs(FileName)方法上传文件,文件大小限制
- FTPClient上传文件大小为0
- 使用ftp.storlines进行文件上传时出现553 Could not create file.的解决方法
- FTPClient上传文件时zip文件损坏的解决方法
- 使用WebClient.UpLoadFile方法在C/S程序中上传文件
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题