C3p0源码探索(一)之配置篇
来源:互联网 发布:21端口入侵 编辑:程序博客网 时间:2024/06/03 11:43
C3p0源码探索(一)之配置篇
所需文件:
1、 c3p0-0.9.1.2.jar http://sourceforge.net/projects/c3p0/
2、 mysql.jar http://dev.mysql.com/downloads/connector/j/5.0.html
3、 c3p0-0.9.1.2http://nchc.dl.sourceforge.net/sourceforge/c3p0/c3p0-0.9.1.2.src.zip(可选)
拥有以上三样东西就可以开始c3p0之旅了,把mysql.jar和c3p0-0.9.1.2.jar放到classpath中就可以开始编写我们的代码了。
C3p0最简单的使用方式就如其官网下所说的一样,只需提供driverName,url,user,password,程序就可以跑起来。
第一种获取数据源的方式:
- ComboPooledDataSource cpds = new ComboPooledDataSource();
- String driverClass = "com.mysql.jdbc.Driver";
- String jdbcURL = "jdbc:mysql://localhost:3306/test";
- String user = "root";
- String password = "";
- cpds.setDriverClass(driverClass);
- cpds.setJdbcUrl(jdbcURL);
- cpds.setUser(user);
- cpds.setPassword(password);
- cpds.setMaxStatements(100);
- Connection conn = cpds.getConnection();
ComboPooledDataSource cpds = new ComboPooledDataSource(); String driverClass = "com.mysql.jdbc.Driver"; String jdbcURL = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = ""; cpds.setDriverClass(driverClass); cpds.setJdbcUrl(jdbcURL); cpds.setUser(user); cpds.setPassword(password); cpds.setMaxStatements(100); Connection conn = cpds.getConnection();
正如简单的jdbc连接数据库一样仅仅只需要这些参数而已。
对于这种配置,如果classpath中有c3p0.properties的配置文件,代码中不需要设置连接信息,直接new ComboPooledDataSource(),他会自动读取配置文件中的配置。当然也可以使用c3p0-config.xml文件配置连接信息,使用xml作为配置信息的话,comboPoolDataSource还可以接受一个String参数,这个参数的名称是在c3p0-config.xml文件中配置,这就意味着我们可以在xml文件中可有都多个数据库源连接信息,比如可以是mysql,oracle的。
- ComboPooledDataSource cpds = new ComboPooledDataSource(“test”);
- <named-config name="test">
- <property name="maxStatements">200</property> <propertyname="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
- <property name="user">root</property>
- <property name="password"></property>
- </named-config>
ComboPooledDataSource cpds = new ComboPooledDataSource(“test”);<named-config name="test"> <property name="maxStatements">200</property> <propertyname="jdbcUrl">jdbc:mysql://localhost:3306/test</property> <property name="user">root</property> <property name="password"></property></named-config>
使用配置文件的方式连接时,c3p0默认在classpath根目录读取配置文件,如果想把配置文件放在自己想放得地方只需设置系统属性
- System.setProperties(“ com.mchange.v2.c3p0.cfg.xml”,”config/c3p0-config.xml”);
System.setProperties(“ com.mchange.v2.c3p0.cfg.xml”,”config/c3p0-config.xml”);
程序就在指定的目录下读取该配置文件。
第二种方式获取数据源,使用数据源工厂类DataSources
- DataSource ds = DataSources.unpooledDataSource(jdbcURL, user, password);
- DataSource pooledDateSource = DataSources.pooledDataSource(ds);
- System.out.println(pooledDateSource.getConnection());
DataSource ds = DataSources.unpooledDataSource(jdbcURL, user, password);DataSource pooledDateSource = DataSources.pooledDataSource(ds); System.out.println(pooledDateSource.getConnection());
第三种获取数据源的方式:
- PoolBackedDataSource backedDataSource = new PoolBackedDataSource();
- backedDataSource.setConnectionPoolDataSource(new ConnectionPoolDataSource() );
- //实现自己的connectionpooldatasource即可
PoolBackedDataSource backedDataSource = new PoolBackedDataSource();backedDataSource.setConnectionPoolDataSource(new ConnectionPoolDataSource() );//实现自己的connectionpooldatasource即可
参数配置:
除了以上连接数据库必要的参数外,提供以下最基本的参数配置信息才能形成数据库连接池
1、 acquireIncrement 每次连接增加数量
2、 initalPoolSize 初始连接数
3、 maxPoolSize 最大连接数
4、 maxIdleTime 最大空闲数
5、 minPoolSize 池中连接最小数量
Tomcat中配置c3p0的方法:
1、server.xml中配置
- <GlobalNamingResources>
- <!-- Editable user database that can also be used by
- UserDatabaseRealm to authenticate users
- -->
- <Resource name="jdbc/test"
- auth="Container"
- description="User database that can be updated and saved"
- factory="org.apache.naming.factory.BeanFactory"
- driverClass="com.mysql.jdbc.Driver"
- maxPoolSize="4"
- minPoolSize="2"
- acquireIncrement="1"
- user="root"
- password=""
- type="com.mchange.v2.c3p0.ComboPooledDataSource"
- jdbcUrl="jdbc:mysql://localhost:3306/test"
- />
- </GlobalNamingResources>
<GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="jdbc/test" auth="Container" description="User database that can be updated and saved" factory="org.apache.naming.factory.BeanFactory" driverClass="com.mysql.jdbc.Driver" maxPoolSize="4" minPoolSize="2" acquireIncrement="1" user="root" password="" type="com.mchange.v2.c3p0.ComboPooledDataSource" jdbcUrl="jdbc:mysql://localhost:3306/test" /> </GlobalNamingResources>
2、 conf目录下Context.xml
<ResourceLink name="jdbc/test" global="jdbc/test" type="javax.sql.DataSource"/>
3、 web.xml
- <resource-ref>
- <res-ref-name>jdbc/ test</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <res-auth>Container</res-auth>
- </resource-ref>
<resource-ref><res-ref-name>jdbc/ test</res-ref-name><res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref>
测试:
- InitialContext context = new InitialContext();
- return (DataSource) context.lookup("java:comp/env/jdbc/test");
- C3p0源码探索(一)之配置篇
- C3p0源码探索(一)之配置篇
- c3p0之详细配置
- Hibernate之C3P0配置
- Spring配置之C3P0
- 探索之路(一)
- 《探索C++多线程》:thread源码(一)
- 《探索C++多线程》:mutex源码(一)
- 《探索C++多线程》:condition_variable源码(一)
- 《探索C++多线程》:future源码(一)
- jquery源码探索之----事件系统Events(一)
- struts2源码探索之初始化(三)
- struts2源码探索之初始化(四)
- 工作总结(一)、c3p0,
- spring之配置C3P0实例
- Spring数据源配置之c3p0
- c3p0 配置(转载)
- 探索实践之软件构建(一)
- SQL Server 2008 R2 用户 'IIS APPPOOL\DefaultAppPool' 登录失败
- 《花开半夏》--7 陆元(1)
- HTML5游戏开发是伪课题?基于HTML5的UI设计才是新领域。
- 进退两难:RIM将BB10授权于OEM不见得是好事
- Flex 操作XML 取得子元素的名称
- C3p0源码探索(一)之配置篇
- rman duplicate实现数据库的迁移
- log4j ndc
- 《花开半夏》--7 陆元(2)
- 使用HttpURLConnection做代理时遇到的cookie放不进去的问题
- 中科院金属所三套大型科研装备研制项目通过验收
- C++ 中stdafx.h
- PMBOK(第4版)--项目管理过程组与知识领域表
- iphone绘图