最近用org.apache.commons.net.ftp.FTPClient  写ftp的上传下载的定时任务

发现有时候线程会卡住,也不报错就一直不工作了,后来发现需要使用ftp的被动模式才行,实现如下

以前有问题的代码是这样写的

ftp.connect(odmInfo.getFtpserver(), port);// 连接FTP服务器

ftp.login(odmInfo.getFtpusername(), odmInfo.getFtppwd());// 登录

reply = ftp.getReplyCode();

下面是修改后的代码,login后需要调用ftp.enterLocalPassiveMode();

ftp.connect(odmInfo.getFtpserver(), port);// 连接FTP服务器

ftp.login(odmInfo.getFtpusername(), odmInfo.getFtppwd());// 登录

//设置ftp为被动模式,解决有时候ftp会卡住问题
ftp.enterLocalPassiveMode();
reply = ftp.getReplyCode();

2019-08-22更新

后来发现只加入被动模式设置也不行,还需要加入超时设置

int reply;
ftp.setDefaultTimeout(30 * 1000);
ftp.setConnectTimeout(30 * 1000);
ftp.setDataTimeout(30 * 1000);
logger.info("start to connect ftp server");
ftp.connect(odmInfo.getFtpserver(), port);// 连接FTP服务器
logger.info("start to login ftp server");
ftp.login(odmInfo.getFtpusername(), odmInfo.getFtppwd());// 登录
//设置ftp为被动模式,解决有时候ftp会卡住问题
ftp.enterLocalPassiveMode();

reply = ftp.getReplyCode();
logger.info("replyCode======"+reply);
if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();
return uploadStatus;
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
boolean mkdirStatus=makeMultiDir(ftpBasePath,ftp);
if(!mkdirStatus)
{
logger.info("make multi dir error!");
return uploadStatus;
}

最新文章

  1. jquery easyui 弹出消息框 (转载) jQuery EasyUI API 中文文档 - 消息框(Messager) http://www.cnblogs.com/hantianwei/archive/2012/03/19/2407113.html
  2. H-Basis/SG/SH GI Relighting
  3. Asp.net与Dojo交互:仪器仪表实现
  4. CentOS6 Squid代理服务器的安装与配置
  5. SpringMVC学习总结(七)——SpringMVC注解@..详解
  6. Data Base sqlServer基础知识
  7. Oracle超出最大连接数问题及解决
  8. web.xml 文件中一般包括 servlet, spring, filter, listenr的配置的加载顺序
  9. rpcz VC2010 构建
  10. c# 连接数据库SqlHelper
  11. python学习—几个简单小程序
  12. ionic+cordova填坑
  13. MySQL高可用方案--MHA部署及故障转移
  14. 如何让classmethod只允许使用用类对象来调用
  15. java基础篇---网络编程(TCP程序设计)
  16. What really happens when you navigate to a URL
  17. JavaScript基础 :学习javascript的原因
  18. mysql show variables
  19. Python os.makedirs() 方法
  20. codepen & js demos

热门文章

  1. 小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
  2. [ML] Load and preview large scale data
  3. 中crontab定时器里的"2>&1"含义解释
  4. Java集合(2):两个生成器的例子:Collection生成器CollectionData及Map生成器MapData
  5. Pearson Correlation Score
  6. Java和SQL取两个字符间的值
  7. 大于2T的硬盘怎么分区
  8. gdb移植(交叉版本)
  9. centos 6.x下jira显示饼图乱码解决方法
  10. dev控件学习笔记之----CxGrid2