FtpPool.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package com.caesolver.ftp;
  2. import org.apache.commons.net.ftp.FTPClient;
  3. import org.apache.commons.pool2.impl.GenericObjectPool;
  4. import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Component;
  7. //@Component
  8. public class FtpPool {
  9. FtpClientFactory factory;
  10. private final GenericObjectPool<FTPClient> internalPool;
  11. //初始化连接池
  12. public FtpPool(@Autowired FtpClientFactory factory){
  13. this.factory=factory;
  14. FtpConfig config = factory.getConfig();
  15. GenericObjectPoolConfig<FTPClient> poolConfig = new GenericObjectPoolConfig<FTPClient>();
  16. poolConfig.setMaxTotal(config.getMaxTotal());
  17. poolConfig.setMinIdle(config.getMinIdel());
  18. poolConfig.setMaxIdle(config.getMaxTotal());
  19. poolConfig.setMaxWaitMillis(config.getMaxWaitMillis());
  20. this.internalPool = new GenericObjectPool<FTPClient>(factory,poolConfig);
  21. }
  22. //从连接池中取连接
  23. public FTPClient getFTPClient() {
  24. try {
  25. return internalPool.borrowObject();
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. return null;
  29. }
  30. }
  31. //将链接归还到连接池
  32. public void returnFTPClient(FTPClient ftpClient) {
  33. try {
  34. internalPool.returnObject(ftpClient);
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. /**
  40. * 销毁池子
  41. */
  42. public void destroy() {
  43. try {
  44. internalPool.close();
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }