设为首页 加入收藏

TOP

c3p0连接池(一)
2014-11-24 07:55:41 来源: 作者: 【 】 浏览:1
Tags:c3p0 连接

在这里记录对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 Map pools = 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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C3P0死锁问题的解决办法 下一篇Oracle中的存储过程简单例子

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)
·MongoDB安装教程(Li (2025-12-26 17:51:04)
·bios设置按什么选择 (2025-12-26 17:20:08)
·知乎 - 知乎 (2025-12-26 17:20:04)