场景

因公司项目需要开发FTP模块,通过FTP方式同步数据到安防内外,之前使用commons-net框架发现程序运行一段时候出现421的错误。1.排除原因发现是FTP连接一段时间后自动断开,无法重来。2.FTP服务器连接数量过多导致程序中断。为了解决以上问题只好自己写了一个FTP连接池管理。此项目已在生产环境使用,每天处理1T数据。

实现功能

1.FTP上传、下载、目录列表、切换目录、登录、注销、创建文件夹、删除、判断文件是否存在等

2.FTP连接池管理、支持重连、连接数量分配、连接超时限制

3.FTP模式切换,支持主动和被动两种模式。

代码地址

https://gitee.com/heliang230/ftp-pool.git

使用方式

application.properties 配置文件

#是否开启ftp,true开启,false关闭 ftp.enable=true #你的ip地址 ftp.client.ip=127.0.0.1 #你的端口 ftp.client.port=21 #你的用户名 ftp.client.username=admin #你的密码 ftp.client.password=admin #字符编码 ftp.client.charset=UTF-8 #0主动 1被动 ,默认是主动模式,根据具体环境选择,如果不清楚FTP模式,可参考 https://www.cnblogs.com/rainman/p/11647723.html ftp.client.model=1 #连接超时时间,注意这边不要设置0,如果FTP服务断口后,可能会导致ftp连接池自检失败 ftp.client.connectionTimeout=3000 #Socket连接超时时长,如果FTP服务断口后,可能会导致ftp连接池自检失败 ftp.client.soTimeout=3000 #连接池最大值 ftp.pool.maxTotal=20 #连接池中最大空闲的连接数 ftp.pool.maxIdle=10 #连接池中最少空闲的连接数,默认为0 ftp.pool.minIdle=5

业务代码

//注入FTP连接池对象,通过此对象可以获取FTP操作对象 @Autowired private FtpClientDataSource dataSource;