![c3p0连接池配置_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1ebd1753-fa53-4bda-9aaa-ecb327210633/1ebd1753-fa53-4bda-9aaa-ecb3272106331.gif)
![c3p0连接池配置_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1ebd1753-fa53-4bda-9aaa-ecb327210633/1ebd1753-fa53-4bda-9aaa-ecb3272106332.gif)
![c3p0连接池配置_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1ebd1753-fa53-4bda-9aaa-ecb327210633/1ebd1753-fa53-4bda-9aaa-ecb3272106333.gif)
![c3p0连接池配置_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1ebd1753-fa53-4bda-9aaa-ecb327210633/1ebd1753-fa53-4bda-9aaa-ecb3272106334.gif)
![c3p0连接池配置_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1ebd1753-fa53-4bda-9aaa-ecb327210633/1ebd1753-fa53-4bda-9aaa-ecb3272106335.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3301000falseTestfalse100nullfalse60360151003rootpasswordselect id from test where id=1300falsetruerootfalseacquireIncrement - 5 acquireRetryAttempts - 30 acquireRetryDelay - 1000 autoCommitOnClose - false automaticTestTable - null breakAfterAcquireFailure - true checkoutTimeout - 0 connectionCustomi
2、zerClassName - null connectionTesterClassName - com.mchange.v2.c3p0.impl.DefaultConnectionTester dataSourceName - 1bqp8hc8ezqxpjc1hp9gny|704baa debugUnreturnedConnectionStackTraces - false description - null driverClass - com.mysql.jdbc.Driver factoryClassLocation - null forceIgnoreUnresolvedTransac
3、tions - false identityToken - 1bqp8hc8ezqxpjc1hp9gny|704baa idleConnectionTestPeriod - 60 initialPoolSize - 5 jdbcUrl - jdbc:mysql:/localhost:3306/db_temp?useUnicode=true&characterEncoding=utf-8 lastAcquisitionFailureDefaultUser - null maxAdministrativeTaskTime - 0 maxConnectionAge - 0 maxIdleTime -
4、 60 maxIdleTimeExcessConnections - 0 maxPoolSize - 30 maxStatements - 0 maxStatementsPerConnection - 0 minPoolSize - 5 numHelperThreads - 3 numThreadsAwaitingCheckoutDefaultUser - 0 preferredTestQuery - null properties - user=*password=* propertyCycle - 0 testConnectionOnCheckin - false testConnecti
5、onOnCheckout - false unreturnedConnectionTimeout - 0 usesTraditionalReflectiveProxies - falsepackage com.paipaiestore.database.c3p0;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.sql.DataSource;import com.mchange.v2.c3p0.DataSources;/* 数据连接池
6、工厂* author samland* version 1.0, 2006-11*/public class DBPoolFactory private static DBPoolFactory dbpoolFactory = new DBPoolFactory();/* 连接池列表*/private static Map poollist = new HashMap();private DBPoolFactory()public static DBPoolFactory getInstance()return dbpoolFactory;/* 向连接池列表添加一个新的池化(Pooled)数据
7、源* param key* param configFile 配置文件名。为了简化参数输入与便于外部维护,可以把配置好的文件传入这里分析*/public void add(String key, String configFile) /read config from file, and build a dbpool/* 向连接池列表添加一个新的池化(Pooled)数据源* param key* param driver 数据连接驱动,如com.mysql.jdbc.Driver* param url 连接串, 如jdbc:mysql:/localhost/samland* param use
8、rname 数据库连接用户名,如samland* param password 数据库连接用户密码* throws Exception*/public void add(String key, String driver, String url, String username, String password)throws Exceptionif (key=null) throw new Exception(DBPool key CANNOT be null) ;Class.forName(driver);DataSource ds_unpooled = DataSources.unpool
9、edDataSource(url, username, password);DataSource ds_pooled = DataSources.pooledDataSource( ds_unpooled );if (poollist.containsKey(key)poollist.remove(key);poollist.put(key, ds_pooled);/* 根据key字符串获取连接池* param key* return DBPool 连接池* throws Exception*/public DBPool getDBPool(String key) throws Excepti
10、onif (key=null) throw new Exception(DBPool key CANNOT be null) ;DataSource ds = (DataSource)poollist.get(key);DBPool dbpool = new DBPool();dbpool.setDs_pooled(ds);return dbpool;/四、连接池的使用通过DBPool来获取数据库连接 (jdbc connection)。4.1 由DBPoolFactory工厂产生一个DBPool4.2 同时,DBPoolFactory工厂根据传入的参数key向这个DBPool注入数据源4.3
11、 从DBPool产生线程内的Connection/package com.paipaiestore.database.c3p0;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;public class DBPool /* 数据库连接。同一个线程使用同一个连接。*/protected static ThreadLocal connection = new ThreadLocal();/* 数据源,需由DBPoolFactory工厂注入*/private DataSource d
12、s_pooled;/* 不能独立构造,必须从DBPoolFactory工厂产生*/protected DBPool()/* get 数据源* return*/public DataSource getDs_pooled() return ds_pooled;/* 注入数据源* param ds_pooled*/public void setDs_pooled(DataSource ds_pooled) this.ds_pooled = ds_pooled;/* 获得数据库连接* 同一个线程只返回相同的一个连接。* return Connection* throws SQLException*/
13、public Connection getConnection() throws SQLExceptionConnection con = (Connection)connection.get();if (con=null) con = ds_pooled.getConnection();connection.set(con);return con;/五、改进线程内数据库连接的使用为了适应程序已经使用开的jdbc事务管理,因此需要改进DBPool成为Transaction类,而原来的DBPool则缩减为如下代码:/public class DBPool private DataSource d
14、s_pooled;protected DBPool()public DataSource getDs_pooled() return ds_pooled;public void setDs_pooled(DataSource ds_pooled) this.ds_pooled = ds_pooled;/package com.paipaiestore.database.c3p0;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;i
15、mport javax.sql.DataSource;public class Transaction /* 数据库连接。同一个线程使用同一个连接。*/protected static ThreadLocal connection = new ThreadLocal();protected static boolean isInUsed = false;/* 开始一个事务* 如果当前线程的数据库连接不存在,则会新获得一个数据库连接* param key* throws Exception*/public static void beginTransaction(String key) thro
16、ws ExceptionConnection conn = (Connection)connection.get();if (conn=null) conn = createConnection(key);setConnection(conn);conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);conn.setAutoCommit(false);isInUsed = true;/* 提交一个事务* throws SQLException*/public static void commitTransactio
17、n() throws SQLException Connection conn = (Connection)connection.get();mit();/* 回滚一个事务* throws SQLException*/public static void rollbackTransaction() throws SQLException Connection conn = (Connection)connection.get();conn.rollback();public static boolean getIsInUsed() return isInUsed;private static
18、void closeConnection() try Connection conn = (Connection)connection.get();if (conn!=null) connection.set(null);conn.close();catch(SQLException sqlexception) private static void close(ResultSet rs)tryStatement st = rs.getStatement();Connection conn = st.getConnection();rs.close();st.close();conn.clos
19、e();catch(Exception exception) /* 获得数据库连接* 同一个线程只返回相同的一个连接。* return* throws SQLException*/public static Connection getConnection() throws SQLException Connection conn = null;conn = (Connection)connection.get();if(conn = null)throw new NullPointerException();elsereturn conn;private static void setCon
20、nection(Connection conn)connection.set(conn);/* 获得一个新的数据库连接* param key* return Connection* throws Exception*/private static Connection createConnection(String key)throws Exception DBPoolFactory df = DBPoolFactory.getInstance();DataSource ds_pooled = df.getDBPool(key).getDs_pooled() ;Connection conn = ds_pooled.getConnection();df = null;return conn;/六、测试/package samland;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024成品门窗购销合同范本
- 2023年锡粉系列项目安全评价报告
- 生活方式与常见疾病预防-第二次形考任务-国开(GZ)-参考资料
- 2024小区电梯分摊协议模板
- 2024快艇销售合同
- 非金属材料结构件项目评估报告
- 2024广告位置的租赁合同范本
- 2024建设游乐场合作协议书
- ISO45001-2018职业健康安全管理体系之8-1:“8运行”解读和应用指导材料(2024A0-雷泽佳)
- 2024咨询服务协议书范本十
- 机动车检测站2022年度安全生产月活动方案
- 2022年山西省中考历史试题(含答案)
- 房地产认筹活动方案(共15篇)
- 人教统编版高中语文必修下册第六单元(单元总结)
- 【商业地产-】温州文成房地产市场调查报告
- 道路工程土方开挖施工方案
- 编译原理课后习习题答案(陈火旺+第三版)
- 乡镇志愿服务工作总结三篇
- 真言宗(密宗)诸佛菩萨明王天神本尊咒语和手印参考(三)菩萨部
- 车险理赔查勘定损技能培训(很实用)
- 电话客服接听技巧与标准
评论
0/150
提交评论