场景
因公司项目需要开发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;
网友评论