common-pool2 (一)------ 池技术导航目录

最早接触的链接池应该是在数据库那边了,早期自己设置过一些参数,最大链接数,空闲链接数,超时时间等等,但是一直没去研究过,这次的契机是公司现有的一个文件上传服务是用FTP做文件服务器,因此需要把FTP链接做池化。因此特来了解。

翻开dbcp链接池,本质上是基于common-pool2做的,另外Druid也是基于common-pool2,因此决定FTP也基于它来实现,毕竟如果自己去实现一个完整的池子的话代价不小。此篇就作为一个导航目录使用。

对象池:

common-pool2是Apache下一个开源的公共资源池,基于此可以快速的建立一个自己的链接池。

核心类:

1. PooledObjectFactory【对象工厂】,用于产生一个新对象。

2. ObjectPool【链接池】,用于存放链接对象的一个池子,提供接口用于对象的借取和归还。

3. PooledObject【链接对象】,链接池内的对象。

以上是3个核心接口,本质上就是Factory来生成PooledObject,存放ObjectPool。

主要类:

1.1 PooledObjectFactory,用于生成对象,主要接口如下,它提供对一个对象的从生成到销毁到验证激活等功能性的操作。

public interface PooledObjectFactory {
	/**
	 * 产生一个连接对象
	 */
	PooledObject makeObject() throws Exception;

	/**
	 * 销毁一个连接对象
	 */
	void destroyObject(PooledObject p) throws Exception;

	/**
	 * 校验对象是否可用
	 */
	boolean validateObject(PooledObject p);

	/**
	 * 激活一个对象
	 */
	void activateObject(PooledObject p) throws Exception;

	/**
	 * 钝化一个对象
	 */
	void passivateObject(PooledObject p) throws Exception;
}

2.1 GenericObjectPoolObjectPool的具体实现类】,这就是包里用来作为默认的链接池对象的实现类。

public class GenericObjectPool extends BaseGenericObjectPool
        implements ObjectPool, GenericObjectPoolMXBean, UsageTracking {

主要提供borrowObject【借取】和returnObject【归还】接口。

2.2 BaseObjectPoolConfig链接池主要配置】,提供了链接池的主要配置,例如进出策略,最大链接,空闲链接,超时时间,回收策略等等一系列丰富的对于链接池的管理。

2.3 AbandonedConfig丢弃策略】,提供了针对链接池内链接的丢弃策略,主要防止内存泄漏。

以上就是这一次我使用链接池时用到的主要接口和类。

对于ftpclientpool的实现已传至Gitee,可以参考。

ftpclientpool链接池

下一篇 common-pool2 (二)------ 链接池配置参数详解

你可能感兴趣的:(连接池)