c3p0源码解析
来源:互联网 发布:转运中国 知乎 编辑:程序博客网 时间:2024/06/16 12:50
准备工作
1. 导入c3p0 和 mchang-commons-java(依赖其中方法)
2. src/c3p0.properties
c3p0.jdbcUrl=jdbc:mysql://localhost:3307/test c3p0.driverClass=com.mysql.jdbc.Driver c3p0.user=root c3p0.password=root c3p0.acquireIncrement=3 c3p0.idleConnectionTestPeriod=60 c3p0.initialPoolSize=10 c3p0.maxIdleTime=60 c3p0.maxPoolSize=20 c3p0.maxStatements=100 c3p0.minPoolSize=53. 写个测试类
import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3P0Test {public static void main(String[] args) {// TODO Auto-generated method stubDataSource ds = new ComboPooledDataSource();try {Connection conn = ds.getConnection();System.out.println("get connected!");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}4. 由入口ComboPooledDataSource类开始
public ComboPooledDataSource() { this( true ); } public ComboPooledDataSource( boolean autoregister ) { super( autoregister ); // System.err.println("...Initializing ComboPooledDataSource."); dmds = new DriverManagerDataSource(); wcpds = new WrapperConnectionPoolDataSource(); wcpds.setNestedDataSource( dmds ); try { this.setConnectionPoolDataSource( wcpds ); } catch (PropertyVetoException e) { logger.log(MLevel.WARNING, "Hunh??? This can't happen. We haven't set up any listeners to veto the property change yet!", e); throw new RuntimeException("Hunh??? This can't happen. We haven't set up any listeners to veto the property change yet! " + e); } // set things up in case there are future changes to our ConnectionPoolDataSource // setUpPropertyEvents(); }由此可知,实际调用的构造器。
4.1 调用父类 AbstractPoolBackedDataSource
protected AbstractPoolBackedDataSource( boolean autoregister ) { super( autoregister ); setUpPropertyEvents(); }调用父类,并设置属性事件setUpPropertyEvents();
4.2 调用父类 PoolBackedDataSourceBase
public PoolBackedDataSourceBase( boolean autoregister ){if (autoregister){this.identityToken = C3P0ImplUtils.allocateIdentityToken( this );C3P0Registry.reregister( this );}}获取当前对象token并注册。
0 0
- c3p0源码解析
- c3p0源码解析 二 (DriverManagerDataSource类)
- c3p0源码解析 三 (WrapperConnectionPoolDataSource类)
- c3p0源码解析 四 (C3P0Config类)
- c3p0源码解析 五 (C3P0Config类)
- c3p0源码解析 六 (C3P0PooledConnectionPoolManager类)
- c3p0源码解析 七 (C3P0PooledConnection类)
- c3p0源码分析
- c3p0配置解析
- c3p0配置解析
- C3P0配置文件解析
- c3p0连接测试的源码分析
- 数据库连接池c3p0常用参数设置及解析
- 开源连接池C3P0解析
- c3p0和dbcp连接池解析
- C3P0
- c3p0
- c3p0
- runtime
- 在RHEL 5下通过Bind实现DNS功能
- Java接口
- 线程与进程
- SQL2008创建订阅发布执行脚本
- c3p0源码解析
- 加盐hash生成密码
- 经典算法——Jump Game(II)
- add_theme_support
- struts.properties 配置说明
- 函数重载
- C++实现——LCS-最大公共子串长度
- Linux目录、文件
- 一些常用的位运算 | & ^