`
45808916
  • 浏览: 5707 次
文章分类
社区版块
存档分类
最新评论

C3P0整体类结构简单分析

 
阅读更多

直接进入主题吧:
这里写图片描述

这张图只是C3P0的部分结构类图,不急,先对总体上有一个了解。

首先我们需要了解,C3P0是“懒初始化”的。也就是说它并不会自己初始化,而是会等到第一个连接请求进来之后它才会初始化。而那个触发点就是:

ComboPooledDataSource.getConnection();

了解上面说的“懒初始化”之后,我们来介绍C3P0中几个主要的类:

ComboPooledDataSource

ComboPooledDataSource: 和外界交互的类,主要负责
1. 设置连接池的配置
2. 获取连接

C3P0PooledConnectionPoolManager

C3P0PooledConnectionPoolManager:连接池大管家,负责连接池的生命周期,并且提供一系列生命周期需要的生态环境:
1. 定时检测任务AdminTaskTimer
2. 全局的线程池

C3P0PoolConnectionPool

C3P0PoolConnectionPool:物理连接池对应的类,自身逻辑并不复杂,主要是通过委托给其代理的ResourcePool来实现“池”的逻辑

BasicResourcePool && BasicResourcePool.Manager

BasicResourcePoolResourcePool的实现类,抽象了一个“资源池”。刚才说到C3P0PooledConnectionPoolManager是管理连接池的生命周期的,那么BasicResourcePool就是管理池中连接的生命周期的。值得注意的是,BasicResourcePool并不是一个人在战斗,它还有一个小伙伴——BasicResourcePool.Manager来协助它一起管理池中的连接。
BasicResourcePool中包含几个任务:
1. 创建数据库连接任务:ScatteredAcquireTask,取代了老版本的AcquireTask
2. 销毁数据库连接任务:RemoveTask,这个任务应该不常用
3. 检测过期连接任务:CullTask,当检测到过期的连接时,则会去销毁这些连接
4. 验证空闲连接有效性任务:CheckIdleResourcesTask&&AsyncTestIdleResourceTask

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    c3p0-0.9.5-pre7.zip

    3. **高度并发**:C3P0设计时考虑了高并发场景,它采用了线程安全的数据结构和算法,确保在多线程环境下也能稳定工作。 4. **异常处理和检测**:C3P0具有自动检测失效连接的功能,当检测到数据库连接异常时,会尝试...

    数据库连接池C3P0,jar包

    4. **并发控制**:C3P0使用线程安全的数据结构来确保多线程环境下的稳定性。 5. **配置灵活性**:C3P0提供了丰富的配置选项,如最小连接数、最大连接数、获取连接超时时间等,可以根据不同应用场景进行定制。 在...

    并行计算之C3模型

    尽管C3模型提供了一种全面的分析框架,但它也存在一些局限性: - **假设限制**:假设同一通信对中的处理器位于网络对分后的不同子网络内。 - **带宽一致性**:假设网络带宽等于处理器带宽,这在实际应用中可能不完全...

    JSP源码JSP数据库连接池的研究与实现(源代码+论文)

    #### 知识点五:案例分析——使用C3P0实现JSP中的数据库连接池 1. **引入依赖**:在项目中添加C3P0的相关依赖。 2. **配置C3P0**: - 创建`c3p0-config.properties`文件,并配置基本的数据库连接信息,如数据库URL...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    java基础 一、仓库说明 Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收...Servlet 集成 C3P0

    bookstore.rar

    《基于c3p0、dbutils与MVC的商城系统实现——JavaWeb课程设计详解》 在JavaWeb开发中,商城系统的实现是一项重要的实践任务,它涵盖了多项核心技术,包括前端展示、后端处理、数据库操作以及框架应用。本项目...

    oracle9i 自带连接池Java代码

    ##### 3.1 类结构及属性定义 在给定的Java代码中,`OraPooledSQL`类实现了对Oracle9i连接池的基本操作。该类包含了以下几个关键属性: - `private PooledConnection dbpool;`:表示连接池对象。 - `private String...

    JDBC 结构优化2 ATM交互系统源码

    Apache DBCP、C3P0和HikariCP是常见的连接池实现。 4. **关闭资源**:每次操作完成后,记得关闭ResultSet、Statement和Connection,释放资源,避免内存泄漏。 5. **使用数据访问对象(DAO)模式**:将数据库操作...

    POI从数据库查询数据写入Excel工具类

    这可能涉及到数据库连接池的使用,如C3P0或HikariCP,以提高性能和资源利用率。 5. **数据写入Excel**:查询结果将被转换为二维数组或其他适合的数据结构,然后利用POI提供的API,将这些数据一行行写入到Excel工作...

    补跟我一起写大虾网(第1天源码)

    4. **c3p0-0.9.1.2.jar**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一些额外的管理特性,如连接测试、自动关闭等。 5. **commons-collections-3.1.jar**:Apache Commons Collections是...

    Javaweb实验报告.docx

    2. 学会和运用 servlet 技术、log4j 技术、jdom 技术、ifreechart 技术、struts 技术、OGNL 技术、action 对象组织、页面间转接关系、数据连接技术、JDBC 数据库连接技术、DBCP 数据库连接池和 c3p0 连接池连接数据...

    Sky管理系统及数据库文件.zip

    3. **c3p0数据库连接池**:c3p0是一个开源的JDBC连接池,它提供了数据源管理和连接管理功能,能有效地提高数据库访问效率,减少数据库连接创建和释放的开销。在Sky管理系统中,c3p0被用作数据库连接管理工具,以优化...

    J2EE企业级项目开发-3期(KC007) 6.3 MyBatis的体系结构考试.doc

    - **连接池管理机制**:MyBatis可以集成多种数据库连接池,如Druid、C3P0等,以实现数据库连接的高效复用,降低系统资源消耗。 - **缓存机制**:MyBatis内置了本地缓存和二级缓存,可以缓存查询结果,减少不必要的...

    java performance

    - 数据库连接池的配置与使用,如C3P0、HikariCP等。 以上知识点只是《Java性能优化》一书部分内容的概述,全书还包含了更多实践案例、实战技巧和最佳实践。通过深入学习和实践,开发者可以提升Java应用的性能,...

    高性能Java系统权威指南.zip

    10. **数据库连接与缓存**:合理配置数据库连接池,如C3P0、HikariCP等,以及利用缓存技术(如Redis、 Ehcache)可以显著减少数据库访问的延迟,提高系统响应速度。 11. **监控与日志**:学会使用监控工具(如...

    ssh框架学习指南介绍ssh的框架结构

    &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt; &lt;!-- 数据库连接信息 --&gt; &lt;!-- 连接池配置 --&gt; ``` #### 四、SSH框架的关键组成部分 ...

    模拟的Java连接池

    在Java中,有多种实现连接池的库,例如Apache的DBCP、C3P0、HikariCP以及Tomcat JDBC Connection Pool等。这些库都提供了配置连接池大小、超时设置、空闲连接检查等功能,以满足不同场景下的需求。 以HikariCP为例...

    葵花宝典-数据库类

    C3P0、Apache DBCP、HikariCP等是常用的Java连接池实现,它们提供了一种高效、安全的方式来获取和释放数据库连接。 6. ORM框架:Object-Relational Mapping(ORM)框架如Hibernate和MyBatis,能够将Java对象和...

Global site tag (gtag.js) - Google Analytics