环境及版本:
框架:SpringMVC 5.1.7.RELEASE
commons-net 3.6
commons-pool 2 2.7.0
1. pom.xml中添加依赖
commons-net
commons-net
3.6
org.apache.commons
commons-pool2
2.7.0
2. 配置文件
#ftp服务器配置
ftp.host=192.168.241.128
ftp.port=21
ftp.username=ftp_user
ftp.password=123
#超时时间(0表示一直连接)
ftp.clientTimeout=0
ftp.connectTimeout=0
#编码格式
ftp.encoding=UTF-8
#缓冲器大小
ftp.bufferSize=1024
#每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据
ftp.passiveMode=true
#连接池数量
ftp.defaultpoolsize=10
#FTP连接池配置
#最大数
ftpPool.maxTotal=50
#最小空闲
ftpPool.minIdle=0
#最大空闲
ftpPool.maxIdle=50
#最大等待时间
ftpPool.maxWait=-1
#池对象耗尽之后是否阻塞,maxWait<0时一直等待
ftpPool.blockWhenExhausted=true
#取对象是验证
ftpPool.testOnBorrow=true
#回收验证
ftpPool.testOnReturn=true
#创建时验证
ftpPool.testOnCreate=true
#空闲验证
ftpPool.testWhileIdle=false
#后进先出
ftpPool.lifo=false
3. FtpClient工厂类
package com.longway.busi.component;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
/**
* @description:
* @title: FTP 工厂
* @author: lrxc
* @date: 2019/11/18 19:12
*/
@Component
public class FtpClientFactory extends BasePooledObjectFactory {
@Value("${ftp.host}")
private String host;
@Value("${ftp.port}")
private int port;
@Value("${ftp.username}")
private String username;
@Value("${ftp.password}")
private String password;
@Value("${ftp.clientTimeout}")
private int clientTimeout;
@Value("${ftp.connectTimeout}")
private int connectTimeout;
@Value("${ftp.encoding}")
private String encoding;
@Value("${ftp.bufferSize}")
private int bufferSize;
@Value("${ftp.passiveMode}")
private boolean passiveMode;
private final static Logger log = Logger.getLogger(FtpClientFactory.class.getName());
/**
* 创建FtpClient对象
*/
@Override
public FTPClient create() {
FTPClient ftpClient = new FTPClient();
ftpClient.setConnectTimeout(conn

本文介绍了如何使用SpringMVC、commons-net和commons-pool库配置FTP连接池,支持多线程读取FTP文件。通过配置文件设置FTP服务器参数,并创建FtpClientFactory和FtpClientPool,实现FTPClient的创建、销毁和验证。同时提供了一个FtpClientTemplate工具类用于文件上传和下载,以及测试类进行功能验证。
最低0.47元/天 解锁文章
645

被折叠的 条评论
为什么被折叠?



