Java BoneCP JDBC连接池

Wesley13
• 阅读 373
package com.hh.util;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.log4j.Logger;

import com.jolbox.bonecp.BoneCP;
import com.jolbox.bonecp.BoneCPConfig;

/**
 * 
 * 项目名称(Project name):MySQLConnectonPool
 * <p>
 * 包 名 (Package name):com.lixunhui.util
 * <p>
 * 类 名 (Class name):ConnectionPool
 * <p>
 * 类描述(Description):
 * <p>
 * 作 者 (Author) :lixunhui@qq.com
 * <p>
 * 创建时间(Create Date):2013-3-30 下午1:58:35
 * <p>
 * 修改人:hh
 * <p>
 * 修改时间:2013-3-30 下午1:58:35
 * <p>
 * 修改备注:
 * <p>
 * 版 本 (Version): @version 1.0
 */
public class ConnectionPool {
    static Logger log=Logger.getLogger(ConnectionPool.class);
    private static BoneCP connectionPool;
    /**
     * 从连接池中获取Connection
     * 
     * @Author lixunhui@qq.com
     * @Description
     * @return
     */
    
    public static Connection getConnection() {
        Connection connection = null;
        int totalConnection=0;
        int freeConnection=0;
        int busyConnection=0;
        
        if(null==connectionPool){
            log.debug("数据库连接池不存在,新建连接池并从中获取数据库链接");
            String username = ResourcesProp.getValue("username");
            String password = ResourcesProp.getValue("password");
            String url = ResourcesProp.getValue("url");
            String driver = ResourcesProp.getValue("driver");
            try {
                Class.forName(driver);
                BoneCPConfig config = new BoneCPConfig();
                // 设置URL
                config.setJdbcUrl(url);
                // 设置用户名
                config.setUsername(username);
                // 设置密码
                config.setPassword(password);
                // 设置60秒检索一次数据库的空暇连接数
                config.setIdleConnectionTestPeriod(60);
                // 设置余暇链接时候
                config.setIdleMaxAge(240);
                // 设置每个分区中最大连接数
                config.setMaxConnectionsPerPartition(100);
                // 设置每个分区中最小链接数
                config.setMinConnectionsPerPartition(5);
                // 当链接用尽的时候,一次获取多少个连接数
                config.setAcquireIncrement(5);
                config.setReleaseHelperThreads(10);
                config.setPartitionCount(3);
                connectionPool = new BoneCP(config);
                connection = connectionPool.getConnection();
                totalConnection=connectionPool.getTotalCreatedConnections();
                freeConnection=connectionPool.getTotalFree();
                busyConnection=connectionPool.getTotalLeased();
                log.debug("从数据库连接池中获取连接成功,总链接数"+totalConnection+"空闲连接数"
                        +freeConnection+"总占用"+busyConnection);
            } catch (Exception e) {
                log.error("从新建数据库连接池中获取链接失败,总链接数"+totalConnection+"空闲连接数"
                        +freeConnection+"总占用"+busyConnection, e);
                e.printStackTrace();
            }
        }else{
            log.debug("数据库连接池存在,从连接池中获取数据库链接");
            try {
                connection=connectionPool.getConnection();
                totalConnection=connectionPool.getTotalCreatedConnections();
                freeConnection=connectionPool.getTotalFree();
                busyConnection=connectionPool.getTotalLeased();
                log.debug("从数据库连接池中获取链接成功,总链接数"+totalConnection+"空闲连接数"
                        +freeConnection+"总占用"+busyConnection);
            } catch (SQLException e) {
                log.error("从数据库链接池中获取链接失败",e);
                e.printStackTrace();
            }
        }
        return connection;
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4天前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
2年前
JDBC对MySQL的基本操作
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;impor
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Java日期时间API系列35
  通过Java日期时间API系列1Jdk7及以前的日期时间类(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fxkzhangsanx%2Fp%2F12032719.html)中得知,Java8以前除了java.sql.Timestamp扩充
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
2年前
JDBC连接MySQL数据库的方法和实例
importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.Statement;p
京东云开发者 京东云开发者
8个月前
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了