`

c3p0实现连接池

    博客分类:
  • java
阅读更多

编译及运行环境:winxp+jdk5.0+eclipse3.2+oracle9i
所需jar包:
    oracle9.jar(oralce驱动器)
    c3p0-0.9.1.2.jar
    log4j-1.2.8.jar
    commons-logging.jar

SystemConfigResources.properties

#oracle config
DRIVER_NAME=oracle.jdbc.driver.OracleDriver
DATABASE_URL=jdbc:oracle:thin:@127.0.0.1:1521:WORK
DATABASE_USER=system
DATABASE_PASSWORD=manager
#c3p0 config
Initial_PoolSize=10
Min_PoolSize=10
Max_PoolSize=50
Acquire_Increment=10
TIMEOUT=5000
MAX_IdleTime=1800
Idle_Test_Period=3000
Validate=true

SystemConfig.java
package com.database.config;
import java.util.*;
public class SystemConfig {
    static String configFile = "com.database.config.SystemConfigResources";
    public static String getConfigInfomation(String itemIndex) {
        try {
            ResourceBundle resource = ResourceBundle.getBundle(configFile);
            return resource.getString(itemIndex);
        } catch (Exception e) {
            return "";
        }
    }
}

DatabaseAccessInterface.java
package com.database;
import java.sql.*;
import java.util.*;
public interface DatabaseAccessInterface {
    public abstract void executeSQL(String sqlStatement) throws SQLException;
    public abstract void executeSQL(String[] sqlStatement) throws SQLException;
    public abstract void executeSQL(String sqlStatement, Object parameters[]) throws SQLException;
    public abstract void executeSQL(String sqlStatement, List parameters) throws SQLException;
    public abstract void executeSQL(String[] sqlStatement, List parameters) throws SQLException;
    public abstract Vector executeQuerySQL(String sqlStatement) throws SQLException;
    public abstract Vector executeQuerySQL(String sqlStatement, Object parameters[]) throws SQLException;
    public abstract Vector executeQuerySQL(String sqlStatement, List parameters) throws SQLException;
    public abstract String getSequenceNum(String tableName) throws SQLException;
}

DatabaseAccessFactory.java
package com.database;
public class DatabaseAccessFactory {
    private static DatabaseAccessInterface databaseai = null;
    public static DatabaseAccessInterface getDataAccessInstance() {
        if (databaseai == null) {
            databaseai = new DatabaseAccessImpl();
        }
        return databaseai;
    }
}

DBConnectionManager.java
package com.database;
import java.sql.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.database.config.*;
import com.mchange.v2.c3p0.*;
public class DBConnectionManager {
    private static Log                   log = LogFactory.getLog(DatabaseAccessImpl.class);
    private static ComboPooledDataSource cpds = null;
    public static void init() {
        log.debug(">>>>>>>>>>>>>>>>>>>>> <DBConnectionManager.init> Begin");
        // 建立数据库连接池
        String DRIVER_NAME = SystemConfig.getConfigInfomation("DRIVER_NAME"); // 驱动器
        String DATABASE_URL = SystemConfig.getConfigInfomation("DATABASE_URL"); // 数据库连接url
        String DATABASE_USER = SystemConfig.getConfigInfomation("DATABASE_USER"); // 数据库用户名
        String DATABASE_PASSWORD = SystemConfig.getConfigInfomation("DATABASE_PASSWORD"); // 数据库密�码
        int Min_PoolSize = 5;
        int Max_PoolSize = 50;
        int Acquire_Increment = 5;
        int Initial_PoolSize = 10;
        int Idle_Test_Period = 3000;// 每隔3000s测试连接是否可以正常使用
        String Validate = SystemConfig.getConfigInfomation("Validate");// 每次连接验证连接是否可用
        if (Validate.equals("")) {            Validate = "false";        }
        // 最小连接数
        try {
            Min_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Min_PoolSize"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // 增量条数
        try {
            Acquire_Increment = Integer.parseInt(SystemConfig.getConfigInfomation("Acquire_Increment"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // 最大连接数
        try {
            Max_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Max_PoolSize"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // 初始化连接数
        try {
            Initial_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Initial_PoolSize"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // 每隔3000s测试连接是否可以正常使用
        try {
            Idle_Test_Period = Integer.parseInt(SystemConfig.getConfigInfomation("Idle_Test_Period"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        try {
            cpds = new ComboPooledDataSource();
            cpds.setDriverClass(DRIVER_NAME); // 驱动器
            cpds.setJdbcUrl(DATABASE_URL); // 数据库url
            cpds.setUser(DATABASE_USER); // 用户名
            cpds.setPassword(DATABASE_PASSWORD); // 密码
            cpds.setInitialPoolSize(Initial_PoolSize); // 初始化连接池大小
            cpds.setMinPoolSize(Min_PoolSize); // 最少连接数
            cpds.setMaxPoolSize(Max_PoolSize); // 最大连接数
            cpds.setAcquireIncrement(Acquire_Increment); // 连接数的增量
            cpds.setIdleConnectionTestPeriod(Idle_Test_Period); // �测连接有效的时间间隔
            cpds.setTestConnectionOnCheckout(Boolean.getBoolean(Validate)); // 每次连接验证连接是否可用
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        log.debug(">>>>>>>>>>>>>>>>>>>>> <DBConnectionManager.init> End");
    }

    public static Connection getConnection() {// 获取数据库连接
        Connection connection = null;
        try {
            if (cpds == null) {
                init();
            }
            connection = cpds.getConnection(); // getconnection
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return connection;
    }

    public static void release() {
        try {
            if (cpds != null) {
                cpds.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

分享到:
评论

相关推荐

    C3P0连接池配置需要的jar包

    C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...

    c3p0数据库连接池

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,通过复用已存在的连接来提高数据库访问效率,减少系统资源消耗,同时提供了一套完善的...

    c3p0连接池jar包

    - C3P0:作为一款开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 2. **C3P0功能特点**: - 自动管理连接:C3P0可以自动检测并修复失效的数据库连接,防止因长时间未使用的连接...

    C3P0连接池jar包(正式).zip

    C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接池扮演着非常重要的角色,它能够有效地管理数据库连接,提高系统性能,减少数据库资源...

    C3P0 连接池源码

    比如,C3P0在旧版本的JDBC驱动上表现稳定,但可能在性能上不如新出现的连接池实现。 通过深入学习C3P0的源代码,我们可以更好地理解和定制连接池,解决数据库连接管理中可能出现的问题,提升系统的稳定性和性能。...

    C3P0连接池配置

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点是轻量级、高效且稳定,广泛应用于各种Java Web应用中。在本文中,我们将深入探讨C3P0连接池的配置,以便更...

    c3p0连接池插件

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。作为一个数据库连接池,c3p0的主要作用在于管理数据库连接,以提高应用程序的性能和效率。在高并发的Web应用中,频繁地...

    数据库连接池c3p0jar包

    C3P0是一个开源的Java连接池实现,它提供了一种灵活且功能强大的数据库连接管理方式。在本文中,我们将深入探讨C3P0连接池的基本概念、工作原理以及如何在Java项目中配置和使用。 **C3P0简介** C3P0是由David Syer...

    c3p0连接池工具

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,提高数据库访问效率,避免因为频繁创建和销毁数据库连接而造成大量的系统资源浪费。在高...

    c3p0数据库连接池示例

    c3p0是由Maurice Priester开发的开源Java连接池实现,它支持JDBC 3规范,并提供了许多高级特性,如自动测试连接、连接池大小动态调整、自动重连等。c3p0通过实现DataSource接口,使得与各种JDBC驱动的兼容性得到保障...

    c3p0数据库连接池jar包

    C3P0数据库连接池是一个开源的Java连接池实现,由Miquel Arroyo创建,主要用于管理和优化数据库连接。在Java应用中,数据库连接的建立、关闭和管理是一个耗时的过程,而C3P0则通过提供连接池功能,提高了数据库操作...

    c3p0连接池

    C3P0连接池是Java开发中常用的数据库连接池组件,它为应用程序提供了一种有效管理数据库连接的方式,从而提高数据库操作的效率和系统的稳定性。C3P0库由Miquel Bias创建并维护,其设计目标是实现高度可配置性、健壮...

    c3p0数据库连接池架包及源码

    C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。这个压缩包包含了C3P0的0.9.5.2版本,以及相关的依赖库。下面将详细介绍C3P0的功能、工作原理以及如何使用。 C3P0...

    C3P0连接池管理类

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用中,尤其是在Web应用中,频繁的数据库连接创建和关闭会消耗大量的系统资源,而通过使用C3P0这样的连接池,可以...

    C3P0连接池jar包.zip

    C3P0连接池是Java开发中常用的数据库连接池实现之一,它提供了高效且可靠的数据库连接管理服务。C3P0是由Mchange公司开发的开源项目,主要用于解决数据库连接的创建、分配、回收等问题,从而提高数据库操作的性能并...

    c3p0连接池源码

    C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。这个连接池在许多应用中被广泛使用,因为它提供了良好的性能和稳定性。在深入理解C3P0源码之前,我们需要先了解一下...

Global site tag (gtag.js) - Google Analytics