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();
}
}
@Override
public synchronized Connection getConnection() throws SQLException, ClassNotFoundException, InterruptedException
{
return cpds.getConnection();
}
@Override
public synchronized void close(Connection conn)
{
try
{
if (conn != null)
{
conn.close();
conn = null;
}
}
catch (SQLException e)
{
dblog.exception(e);
}
}
@Override
public synchronized void close(Statement stat)
{
try
{
if (stat != null)
{
stat.close();
stat = null;
}
}
catch (SQLException e)
{
dblog.exception(e);
}
}
@Override
public 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连接池jar包
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...
c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包
c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar
c3p0连接池配置使用
c3p0连接池工具
C3P0数据库连接池jar包和配置文件
C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解
C3P0连接池
c3p0连接池配置, 个人找了很多资料 都在.txt里面,有项目完整配置,解释,还有一些相关网站资料等
C3P0数据库连接池的源代码
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
C3P0连接池参数配置
一个spring + c3p0 连接池的例子,通过这个例子可以学习简单的spring配置和c3p0连接池的知识
c3p0连接池连接数据实例和jar包,有详细的实例参考
c3p0连接池以及配置文件
c3p0连接池jar包,完整数据包。 c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能
c3p0连接池参数配置
C3P0:数据库连接池技术 步骤: 1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar 2.定义配置文件 名称:c3p0.properties 或者 c3p0-config.xml 路径:直接将文件放在src目录下即可 3.创建数据库连接池...