C3P0连接池使用小结
来源:互联网 发布:js改变body的display 编辑:程序博客网 时间:2024/05/16 09:08
C3P0在最近的demo中也用了(我用的是0.9.2.1版本),因为单例很难应付大量并发。
【引用请注明出处http://blog.csdn.net/bhq2010/article/details/9219947】
用法详见文档:http://www.mchange.com/projects/c3p0/
基本的用法在http://www.mchange.com/projects/c3p0/#quickstart,以及http://www.mchange.com/projects/c3p0/#using_c3p0中。
在项目中更为方便的做法是将配置写在配置文件中。
C0P0的配置文件名为c3p0-config.xml,详见http://www.mchange.com/projects/c3p0/#configuration_files
一个示例的配置文件如下:
【引用请注明出处http://blog.csdn.net/bhq2010/article/details/9219947】
<?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config><property name="automaticTestTable">t_c3p0_test</property><property name="checkoutTimeout">10000</property><property name="idleConnectionTestPeriod">10</property><property name="initialPoolSize">5</property><property name="maxIdleTime">600</property><property name="maxPoolSize">20</property><property name="minPoolSize">2</property><property name="maxStatements">60</property><property name="maxStatementsPerConnection">3</property><user-overrides user="test-user"><property name="maxPoolSize">10</property><property name="minPoolSize">1</property><property name="maxStatements">0</property></user-overrides></default-config><named-config name="metkb"><property name="acquireIncrement">20</property><property name="initialPoolSize">10</property><property name="minPoolSize">10</property><property name="maxPoolSize">100</property><property name="maxStatements">0</property><property name="maxStatementsPerConnection">10</property><!-- he's important, but there's only one of him --><user-overrides user="master-of-the-universe"><property name="acquireIncrement">1</property><property name="initialPoolSize">1</property><property name="minPoolSize">1</property><property name="maxPoolSize">5</property><property name="maxStatementsPerConnection">50</property></user-overrides></named-config></c3p0-config>放在eclipse Web工程的src目录下即可(eclipse会将该目录下的配置文件复制到tomcat的webapps/XXX/WEB-INF/classes下)
一个C3P0的单例的示例代码如下(连接池的单例并不妨碍并发,因为从连接池中取连接并不费时,而且取出的连接是线程安全的):
【引用请注明出处http://blog.csdn.net/bhq2010/article/details/9219947】
package cn.edu.ruc.metkb.util;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.mchange.v2.c3p0.ComboPooledDataSource;public class PooledDBA implements DBA{private ComboPooledDataSource cpds = null;private static Log dblog = null;private static String DBClassName = null;private static String DBName = null;private static String DBUrl = null;private static String DBUser = null;private static String DBPassword = null;protected PooledDBA(){cpds = new ComboPooledDataSource("metkb");try{cpds.setDriverClass( DBClassName );}catch (PropertyVetoException e){dblog.exception(e);} cpds.setJdbcUrl( DBUrl + DBName);cpds.setUser(DBUser); cpds.setPassword(DBPassword);}static{try{DBClassName = ConfigFactory.getInstance().get("db.classname");DBName = ConfigFactory.getInstance().get("db.name");DBUrl = ConfigFactory.getInstance().get("db.url");DBUser = ConfigFactory.getInstance().get("db.user");DBPassword = ConfigFactory.getInstance().get("db.password");dblog = LogFactory.getInstance().getLog("db");}catch (Exception e){e.printStackTrace();}}@Overridepublic synchronized Connection getConnection() throws SQLException, ClassNotFoundException, InterruptedException{return cpds.getConnection();}@Overridepublic synchronized void close(Connection conn){try{if (conn != null){conn.close();conn = null;}}catch (SQLException e){dblog.exception(e);}}@Overridepublic synchronized void close(Statement stat){try{if (stat != null){stat.close();stat = null;}}catch (SQLException e){dblog.exception(e);}}@Overridepublic synchronized void close(ResultSet rest){try{if (rest != null){rest.close();rest = null;}}catch (SQLException e){dblog.exception(e);}}}
【引用请注明出处http://blog.csdn.net/bhq2010/article/details/9219947】
- C3P0连接池使用小结
- C3P0连接池使用小结
- c3p0连接池使用
- 使用C3P0连接池
- C3P0连接池使用
- C3P0连接池使用
- c3p0数据库连接池使用小结
- c3p0连接池的使用
- Tomcat 使用 c3p0连接池
- 使用c3p0创建连接池
- 使用c3p0连接池checkoutTimeout
- c3p0连接池的使用
- hibernate使用c3p0连接池
- Hibernate使用c3p0连接池
- C3P0连接池的使用
- C3P0连接池使用教程
- C3P0连接池使用教程
- 使用C3P0连接池释放当前连接
- 图之prim算法
- 我们该如何设计数据库(二)
- Oracle层次查询和with函数的使用
- 黑马程序员 常用的一些小算法
- Linux进程同步之POSIX信号量
- C3P0连接池使用小结
- C#打印杨辉三角实例
- Linear Work Suffix Array Construction
- 编程珠玑第一章
- c和指针
- 进程和线程
- AsyncTask 详解
- 001递归——整数划分
- 解决jsp中获取url传参中文乱码问题