• javaweb-dbcp


    package cn.songxinqiang.samples.commonsdbcp.util;

    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.SQLException;
    import java.util.Properties;

    import javax.sql.DataSource;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;

    /**
     * tomcat数据库连接池管理类<br>
     * 使用为tomcat部署环境<br>
     * 需要在类路径下准备数据库连接配置文件dbcp.properties
     * 
     * @author 宋信强
     * @mail songxinqiang123@gmail.com
     * 
     * @time 2013-12-27
     * 
     */
    public class DBManager {
     private static final Log log = LogFactory.getLog(DBManager.class);
     private static final String configFile = "dbcp.properties";

     private static DataSource dataSource;

     static {
      Properties dbProperties = new Properties();
      try {
       dbProperties.load(DBManager.class.getClassLoader()
         .getResourceAsStream(configFile));
       dataSource = BasicDataSourceFactory.createDataSource(dbProperties);

       Connection conn = getConn();
       DatabaseMetaData mdm = conn.getMetaData();
       log.info("Connected to " + mdm.getDatabaseProductName() + " "
         + mdm.getDatabaseProductVersion());
       if (conn != null) {
        conn.close();
       }
      } catch (Exception e) {
       log.error("初始化连接池失败:" + e);
      }
     }

     private DBManager() {
     }

     /**
      * 获取链接,用完后记得关闭
      * 
      * @see {@link DBManager#closeConn(Connection)}
      * @return
      */
     public static final Connection getConn() {
      Connection conn = null;
      try {
       conn = dataSource.getConnection();
      } catch (SQLException e) {
       log.error("获取数据库连接失败:" + e);
      }
      return conn;
     }

     /**
      * 关闭连接
      * 
      * @param conn
      *            需要关闭的连接
      */
     public static void closeConn(Connection conn) {
      try {
       if (conn != null && !conn.isClosed()) {
        conn.setAutoCommit(true);
        conn.close();
       }
      } catch (SQLException e) {
       log.error("关闭数据库连接失败:" + e);
      }
     }

    }

    配置文件:

    #数据库驱动
    driverClassName=com.mysql.jdbc.Driver
    #数据库连接地址
    url=jdbc:mysql://localhost/ctg
    #用户名
    username=root
    #密码
    password=123456

    #连接池的最大数据库连接数。设为0表示无限制
    maxActive=30
    #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
    #接将被标记为不可用,然后被释放。设为0表示无限制
    maxIdle=10
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
    maxWait=1000

    #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true) 
    removeAbandoned=true
    #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
    removeAbandonedTimeout=180

    使用代码

    public class ConnectionSource {
     public static void main(String[] args){
      long begin=System.currentTimeMillis();
      for(int i=0;i<10000;i++){
       Connection conn=DBManager.getConn();
       System.out.print(i+"   ");
       DBManager.closeConn(conn);
      }
      long end=System.currentTimeMillis();
      System.out.println("用时:"+(end-begin));
     }
    }

  • 相关阅读:
    使用snv命令来更新项目
    linux下实现开机启动应用程序
    Qt Designer 打开失败,报Run time error错误的解决办法。
    <<Effective c++>>读书笔记---条款19:设计class犹如设计type
    字符串的格式化方式
    最新民政部行政区划代码,省市区三级
    DigitalOcean
    (译)Windsor入门教程---第五部分 添加日志功能
    (译)Windsor入门教程---第四部分 整合
    (译)Windsor入门教程---第三部分 编写第一个Installer
  • 原文地址:https://www.cnblogs.com/my-time/p/4513783.html
Copyright © 2020-2023  润新知