在这里记录对c3p0连接池管理的一些代码
一、连接池管理类
import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import com.mchange.v2.c3p0.ComboPooledDataSource; import com.shine.framework.util.XMLUtil; /** * 数据库连接池管理器,基于C3P0
* */ public class ConnPoolManager { private final static ConnPoolManager instance = new ConnPoolManager(); private Mappools = new HashMap (); private ConnPoolManager(){ } public static ConnPoolManager getInstance(){ return instance; } /** * 初始化连接池 * @param configPath 配置文件路径 */ public void initial(String configPath){ Document configDoc = XMLUtil.file2Doc(configPath); List res = configDoc.getRootElement().getChildren("Resource"); if(res!=null){ for(Element re:res){ String name = null; try{ name = re.getAttributeva lue("name"); String driverClassName = re.getAttributeva lue("driverClassName"); String jdbcUrl = re.getAttributeva lue("jdbcUrl"); String username = re.getAttributeva lue("username"); String password = re.getAttributeva lue("password"); String minPoolSize = re.getAttributeva lue("minPoolSize"); String maxPoolSize = re.getAttributeva lue("maxPoolSize"); String initialPoolSize = re.getAttributeva lue("initialPoolSize"); String acquireIncrement = re.getAttributeva lue("acquireIncrement"); String idleConnectionTestPeriod = re.getAttributeva lue("idleConnectionTestPeriod"); String checkoutTimeout = re.getAttributeva lue("checkoutTimeout"); String maxStatement = re.getAttributeva lue("maxStatement"); String maxStatementsPerConnection = re.getAttributeva lue("maxStatementsPerConnection"); String maxIdleTime = re.getAttributeva lue("maxIdleTime"); String numHelperThreads = re.getAttributeva lue("numHelperThreads"); ComboPooledDataSource pool = new ComboPooledDataSource(); pool.setDataSourceName(name); //数据源名称 pool.setDriverClass(driverClassName); //数据库驱动类名 pool.setJdbcUrl(jdbcUrl); //数据库连接url pool.setUser(username); //数据库用户名 pool.setPassword(password); //数据库密码 pool.setMinPoolSize(string2int(minPoolSize, 2)); //最小连接数 pool.setInitialPoolSize(string2int(initialPoolSize, 5)); //初始化连接数 pool.setMaxPoolSize(string2int(maxPoolSize, 20)); //最大连接数 pool.setAcquireIncrement(string2int(acquireIncrement, 3)); //连接数的增量 pool.setIdleConnectionTestPeriod(string2int(idleConnectionTestPeriod, 120)); //检测空闲连接的时间间隔,单位为秒 pool.setCheckoutTimeout(string2int(checkoutTimeout, 3000)); //获取连接的超时时间,超时则抛出异常,单位为毫秒 pool.setMaxStatements(string2int(maxStatement, 0)); //最大statement数 pool.setMaxStatementsPerConnection(string2int(maxStatementsPerConnection, 0)); //单个连接所拥有的最大statement缓存数 pool.setMaxIdleTime(string2int(maxIdleTime, 300)); //最大空闲时间,该时间内未使用的连接将被丢弃,单位为秒 pool.setNumHelperThreads(string2int(numHelperThreads, 3)); //帮助线程个数,通过多线程同时执行SQL pools.put(name, pool); System.out.println("注册数据库连接池"+name); }c