Apache FTPClient storeFile 僵死 上传文件大小为 0

RT,使用FTPClient做FTP上传,由quartz来定时运行(2分钟一次),之前在生产环境调试没问题,一些时间后现场反馈不能上传了,当出现10个扫描文件的日志后就不再出现了(扫描文件日志为每次运行任务前先扫描指定目录并输出需要上传的文件件数 ),后来发现因为quartz在这种配置下,默认同任务线程池最多只启动10个线程,由此可见是因为之前的任务并没有运行结束,按照正常,这个任务完全可以在1,2秒内运行完。

   经过多次跟踪,发现问题出在上传文件那个过程。storeFile这个方法得不到服务端的响应,导致程序一直僵死。

  从FTP服务器上的日志看到客户端正常登录,切换二进制模式,上传文件都正常,就是上传的文件大小永远都是0。询问现场在之前联调成功后修改过什么配置没,对方表示未修改过。后来想了想,FTP有两种模式:主动模式,被动模式;关于两种模式的区别可以网上搜一下。而FTPClient默认使用主动模式,将其改为被模式后一切正常,由此可见在上次联调成功后,现场对网络相关配置(例如防火墙规则)做过修改,导致主动模式不能正常上传文件了。

   除此之外,还有一种情况,手工使用ftp命令或工具上传成功,但使用程序则不行,有可能是操作系统防火墙阻止了程序的这种操作,可将防火墙关闭以验证是否此原因导致。

 

 

  

你可能感兴趣的:(防火墙,上传文件大小为0)