用CP30获取连接的工具类
2011-12-14 16:15
169 查看
package com.commons; import java.sql.Connection; import org.apache.log4j.Logger; import com.mchange.v2.c3p0.ComboPooledDataSource; public class ConnectionManager { private static Logger logger = Logger.getLogger(ConnectionManager.class); private static ConnectionManager instance; private ComboPooledDataSource datasource; private ConnectionManager() { try { datasource = new ComboPooledDataSource(); // 数据源进行各种有效的控制: // 设置驱动 datasource.setDriverClass(ToolUtils .getStringProperty("jdbc.driverClass")); // 设置数据库URL datasource.setJdbcUrl(ToolUtils.getStringProperty("jdbc.jdbcUrl")); // 设置用户名 datasource.setUser(ToolUtils.getStringProperty("jdbc.user")); // 设置密码 datasource .setPassword(ToolUtils.getStringProperty("jdbc.password")); // 当连接池中的连接用完时,C3PO一次性创建新的连接数目; datasource.setAcquireIncrement(1); // 定义在从数据库获取新的连接失败后重复尝试获取的次数,默认为30; datasource.setAcquireRetryAttempts(60); // 两次连接中间隔时间默认为1000毫秒 datasource.setAcquireRetryDelay(60000); // 连接关闭时默认将所有未提交的操作回滚 默认为false; datasource.setAutoCommitOnClose(false); // 获取连接失败将会引起所有等待获取连接的线程异常,但是数据源仍有效的保留,并在下次调用 // getConnection()的时候继续尝试获取连接.如果设为true,那么尝试获取连接失败后该数据源将申明已经断开并永久关闭.默认为false datasource.setBreakAfterAcquireFailure(false); // 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出 // SQLException,如设为0则无限期等待.单位毫秒,默认为0 datasource.setCheckoutTimeout(0); // 隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查; datasource.setIdleConnectionTestPeriod(0); // 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3 datasource.setInitialPoolSize(Integer.valueOf( ToolUtils.getStringProperty("jdbc.poolinit")).intValue()); // 最大空闲时间,超过空闲时间的连接将被丢弃.为0或负数据则永不丢弃.默认为0; datasource.setMaxIdleTime(0); // 连接池中保留的最大连接数据.默认为2 datasource.setMaxPoolSize(Integer.valueOf( ToolUtils.getStringProperty("jdbc.poolmax")).intValue()); // JDBC的标准参数,用以控制数据源内加载的PreparedStatement数据.但由于预缓存的 // Statement属于单个Connection而不是整个连接池.所以设置这个参数需要考滤到多方面的因素,如果maxStatements // 与maxStatementsPerConnection均为0,则缓存被关闭.默认为0; datasource.setMaxStatements(0); // 连接池内单个连接所拥有的最大缓存被关闭.默认为0; datasource.setMaxStatementsPerConnection(0); // C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成.扩展这些操作可以有效的提升性能,通过多数程实现多个操作同时被执行.默为为2 datasource.setNumHelperThreads(2); // 用户修改系统配置参数执行前最多等待的秒数.默认为300; datasource.setPropertyCycle(300); } catch (Exception e) { logger.info("创建c3p0数据源出现异常," + e); } } public static final ConnectionManager getInstance() { if (instance == null) { try { instance = new ConnectionManager(); } catch (Exception e) { logger.info("创建c3p0数据源出现异常," + e); } } return instance; } public synchronized final Connection getConnection() { try { // 获取数据连接 return datasource.getConnection(); } catch (Exception e) { logger.info("无法从数据源获取连接," + e); } return null; } }
相关文章推荐
- 获取数据库连接工具类
- JDBCTools 工具类(c3p0连接池获取连接,关闭连接,基本事务)
- mina长连接ConnectFutrueUntil(获取Iosession工具类)类
- DButils工具类可以用来获取数据库连接向数据库插入更新删除对象2
- 常用util工具类——获取网络连接状态
- DButils工具类能够用来获取数据库连接向数据库插入更新删除对象2
- SFTP工具类——切换目录,遍历保存一个目录,关闭资源,获取连接
- JDBC获取连接、关闭连接的简单工具类
- java获取url连接地址参数的工具类
- 获取数据库连接工具类
- JDBC以及相关技术学习(二)----把JDBC获取连接封装成一个工具类
- java 从数据源获取连接工具类DBUtil 实例
- DButils工具类能够用来获取数据库连接向数据库插入更新删除对象
- JDBC获取连接的三种工具类封装方式(v1.0)
- Mybatis获取连接工厂工具类
- JavaWeb之JDBC(二)采用读取配置文件方式编写JDBC的工具类,获取数据库的连接
- JDBC实例--通过连接工具类DBUtil +配置文件来获取连接数据库,方便又快捷
- DButils工具类可以用来获取数据库连接向数据库插入更新删除对象
- JDBC获取连接、关闭连接的简单工具类2
- 从连接池获取连接