package com.caesolver.ftp; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; //@Component public class FtpPool { FtpClientFactory factory; private final GenericObjectPool internalPool; //初始化连接池 public FtpPool(@Autowired FtpClientFactory factory){ this.factory=factory; FtpConfig config = factory.getConfig(); GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(config.getMaxTotal()); poolConfig.setMinIdle(config.getMinIdel()); poolConfig.setMaxIdle(config.getMaxTotal()); poolConfig.setMaxWaitMillis(config.getMaxWaitMillis()); this.internalPool = new GenericObjectPool(factory,poolConfig); } //从连接池中取连接 public FTPClient getFTPClient() { try { return internalPool.borrowObject(); } catch (Exception e) { e.printStackTrace(); return null; } } //将链接归还到连接池 public void returnFTPClient(FTPClient ftpClient) { try { internalPool.returnObject(ftpClient); } catch (Exception e) { e.printStackTrace(); } } /** * 销毁池子 */ public void destroy() { try { internalPool.close(); } catch (Exception e) { e.printStackTrace(); } } }