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

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

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

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

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

 

 

  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值