C3P0整体类结构简单分析
2015-10-18 22:47
417 查看
直接进入主题吧:
这张图只是C3P0的部分结构类图,不急,先对总体上有一个了解。
首先我们需要了解,C3P0是“懒初始化”的。也就是说它并不会自己初始化,而是会等到第一个连接请求进来之后它才会初始化。而那个触发点就是:
了解上面说的“懒初始化”之后,我们来介绍C3P0中几个主要的类:
1. 设置连接池的配置
2. 获取连接
1. 定时检测任务
2. 全局的线程池
1. 创建数据库连接任务:
2. 销毁数据库连接任务:
3. 检测过期连接任务:
4. 验证空闲连接有效性任务:
这张图只是C3P0的部分结构类图,不急,先对总体上有一个了解。
首先我们需要了解,C3P0是“懒初始化”的。也就是说它并不会自己初始化,而是会等到第一个连接请求进来之后它才会初始化。而那个触发点就是:
ComboPooledDataSource.getConnection();
了解上面说的“懒初始化”之后,我们来介绍C3P0中几个主要的类:
ComboPooledDataSource
ComboPooledDataSource: 和外界交互的类,主要负责
1. 设置连接池的配置
2. 获取连接
C3P0PooledConnectionPoolManager
C3P0PooledConnectionPoolManager:连接池大管家,负责连接池的生命周期,并且提供一系列生命周期需要的生态环境:
1. 定时检测任务
AdminTaskTimer
2. 全局的线程池
C3P0PoolConnectionPool
C3P0PoolConnectionPool:物理连接池对应的类,自身逻辑并不复杂,主要是通过委托给其代理的
ResourcePool来实现“池”的逻辑
BasicResourcePool && BasicResourcePool.Manager
BasicResourcePool:
ResourcePool的实现类,抽象了一个“资源池”。刚才说到
C3P0PooledConnectionPoolManager是管理连接池的生命周期的,那么
BasicResourcePool就是管理池中连接的生命周期的。值得注意的是,
BasicResourcePool并不是一个人在战斗,它还有一个小伙伴——
BasicResourcePool.Manager来协助它一起管理池中的连接。
BasicResourcePool中包含几个任务:
1. 创建数据库连接任务:
ScatteredAcquireTask,取代了老版本的
AcquireTask
2. 销毁数据库连接任务:
RemoveTask,这个任务应该不常用
3. 检测过期连接任务:
CullTask,当检测到过期的连接时,则会去销毁这些连接
4. 验证空闲连接有效性任务:
CheckIdleResourcesTask&&
AsyncTestIdleResourceTask
相关文章推荐
- 解决Communications link failure due to underlying exception
- 简化SSH配置+c3po连接池配置
- C3P0的详细配置说明(com.mchange.v2.c3p0.ComboPooledDataSource)
- c3p0数据库连接池不能取到连接
- c3p0详细配置
- c3p0的oracle数据库配置
- C3P0 数据库连接池之一
- jfinal使用c3p0连接mysql数据库,连接线程time_wait问题
- C3P0连接池泄露,C3p0报错
- Spring 结合Hibernate 配置 C3P0 连接池(转)
- MySQL 数据库名大小写问题 导致的c3p0连接池 出错
- 数据库连接池的使用(C3P0实现多数据源的数据库连接池)
- com.microsoft.sqlserver.jdbc.SQLServerException: 不支持此服务器版本。目标服务器必须是 SQL Server 2000 或更高版本
- 数据库连接池配置
- c3p0详细配置。
- 【参考并修改】sql 2008通过sql输出表结构到EXCEL【全】
- Struts2+spring2+hibernate3实例源码-java源码
- MySQL与Hibernate的整合使用
- Hibernate c3p0 logging不通过slf4j输出的解决办法
- 数据库连接池