日期:2014-05-16  浏览次数:20444 次

读取并配置c3p0,并获得Connection对象

/*

driver.class=com.mysql.jdbc.Driver
jdbc.url=
user=
password=

min.pool.size=5
max.pool.size=20
acquire.increment=5

*/

package com.greatchn.htcwweb.dto;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;

public class ConnectionPool {??
??
??? private static Log _log = LogFactory.getLog(ConnectionPool.class);??
?
??? private static ConnectionPool _instance = new ConnectionPool();??
?
??? private Properties _props;??
??? private ComboPooledDataSource _cpds;??
???
???
??? public static void cleanUp(Connection con) {??
??????? _instance._cleanUp(con);??
??? }??
??? public static void cleanUp(Connection con, Statement s) {??
??????? _instance._cleanUp(con, s);??
??? }??
??? public static void cleanUp(Connection con, Statement s, ResultSet rs) {??
??????? _instance._cleanUp(con, s, rs);??
??? }??
??? public static void destroy() throws SQLException {??
??????? _instance._destroy();??
??? }??
?
??? public static Connection getConnection() throws SQLException {??
??????? return _instance._getConnection();??
??? }??
??????
??? public static Properties getProperties() {??
??????? return _instance._props;??
??? }??
?
??? private ConnectionPool() {??
??????? try {??
?
??????????? // Properties??
?
??????????? ClassLoader classLoader = getClass().getClassLoader();??
?
??????????? _props = new Properties();??
?
??????????? _props.load(classLoader.getResourceAsStream(??
??????????????? "connection-pool.properties"));??
?
??????????? _props.list(System.out);??
?
??????????? // Pooled data source??
?
??????????? String driverClass = _props.getProperty("driver.class");??
??????????? String jdbcUrl = _props.getProperty("jdbc.url");??
??????????? String user = _props.getProperty("user");??
??????????? String password = _props.getProperty("password");??
?
??????????? int minPoolSize = 5;??
?
??????????? try {??
??????????????? minPoolSize = Integer.parseInt(??
??????????????????? _props.getProperty("min.pool.size"));??
??????????? }??
??????????? catch (Exception e) {??
??????????? }??
?
??????????? int maxPoolSize = 5;??
?
??????????? try {??
??????????????? maxPoolSize = Integer.parseInt(??
??????????????????? _props.getProperty("max.pool.size"));??
??????????? }??
??????????? catch (Exception e) {??
??????????? }??
?
??????????? int acquireIncrement = 5;??
?
??????????? try {??
??????????????? acquireIncrement = Integer.parseInt(??
??????????????????? _props.getProperty("acquire.increment"));??
??????????? }??
??????????? catch (Exception e) {??
??????????? }??
?
??????????? _cpds = new ComboPooledDataSource();??
?
??????????? _cpds.setDriverClass(driverClass);??
??????????? _cpds.setJdbcUrl(jdbcUrl);??
??????????? _cpds.setUser(user);??
??????????? _cpds.setPassword(password);??
?
??????????? _cpds.setMinPoolSize(minPoolSize);??
??????????? _cpds.setMaxPoolSize(maxPoolSize);??
??????????? _cpds.setAcquireIncrement(acquireIncrement);??
??????? }??
??????? catch (Exception e) {??
??????????? _log.error(e);??
??????? }??
??? }??
?
??? private void _cleanUp(Connection con) {??
??????? _cleanUp(con, null, null);??
??? }??
?
??? private void _cleanUp(Connection con, Statement s) {??
??????? _cleanUp(con, s, null);??
??? }??
?
??? private void _cleanUp(C