• Tomcat jdbc pool配置


      Tomcat jdbc pool是apache在tomcat7版本中启用的新连接池,用它来解决以往DBCP无法解决的一些问题。

    Tomcat jdbc pool的优点:

      (1)    tomcat jdbc pool 近乎兼容 dbcp ,性能更高

      (2)    异步方式获取连接

      (3)    tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架

      (4)    使用 javax.sql.PooledConnection 接口获取连接

      (5)    支持高并发应用环境

      (6)    超简单,核心文件只有8个,比 c3p0 还少

      (7)    更好的空闲连接处理机制

      (8)    支持 JMX

      (9)    支持 XA Connection

      Tomcat jdbc pool的使用仅需2个jar包,分别为tomcat-jdbc.jar和tomcat-juli.jar,这两个jar包都可以在tomcat7中找到,tomcat-jdbc.jar在tomcat的lib目录下,tomcat-juli.jar在bin目录下。

    下面是我自己测试用的连接类:

    package com.grtg.util;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    
    import org.apache.tomcat.jdbc.pool.DataSource;
    import org.apache.tomcat.jdbc.pool.PoolProperties;
    
    
    /**
     * tomcat jdbc pool数据库连接池管理类
     * 
     */
    public class DBUtil {
        static DataSource dataSource = new DataSource();
    
        static {
            PoolProperties poolProperties = new PoolProperties();
            Properties dbProperties = new Properties();
            try {
                dbProperties.load(DBUtil.class.getClassLoader().getResourceAsStream(配置文件地址));
                //设置URL
                poolProperties.setUrl(dbProperties.getProperty("url"));
                //设置驱动名
                poolProperties.setDriverClassName(dbProperties.getProperty("driver"));
                //设置数据库用户名
                poolProperties.setUsername(dbProperties.getProperty("username"));
                //设置数据库密码
                poolProperties.setPassword(dbProperties.getProperty("password"));
                //设置初始化连接数
                poolProperties.setInitialSize(Integer.valueOf(dbProperties.getProperty("initialSize")));
                
                dataSource.setPoolProperties(poolProperties);
            } catch (Exception e) {
                throw new RuntimeException("初始化数据库连接池失败");
            }
        }
    
        private DBUtil() {
            super();
        }
        
        /**
         * 获取数据库连接
         * @return 数据库连接
         */
        public static final Connection getConnection() {
            Connection conn = null;
            try {
                conn = dataSource.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException("获取数据库连接失败");
            }
            return conn;
        }
    
        /**
        * 关闭连接
        * 
        * @param conn
        *            需要关闭的连接
        */
        public static void closeConnection(Connection conn) {
            try {
                if (conn != null && !conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException e) {
                throw new RuntimeException("关闭数据库连接失败");
            }
        }
    }

    下面是配置文件信息:

    ##############################MySQL数据库连接驱动##############################
    #数据库连接URL
    url=jdbc:mysql://localhost:3306/grtg?useUnicode=true&characterEncoding=utf8
    #数据库连接驱动
    driver=com.mysql.jdbc.Driver
    #数据库连接用户名
    username=root
    #数据库连接密码
    password=root
    ##############################MySQL数据库连接驱动END###########################
    
    ##############################连接池配置######################################
    #初始化连接:连接池启动时创建的初始化连接数量
    initialSize=10
    #连接池的最大数据库连接数。设为0表示无限制
    maxActive=50
    #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被释放。设为0表示无限制
    maxIdle=10
    #最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接
    minIdle=5
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
    maxWait=1000
    #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true) 
    removeAbandoned=true
    #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
    removeAbandonedTimeout=180
    ##############################连接池配置######################################

    以上便是配置信息,诸位如果有好的见解可以提出,大家共同学习。

  • 相关阅读:
    《JavaWeb从入门到改行》JSP+EL+JSTL大杂烩汤
    Linux下进程线程,Nignx与php-fpm的进程线程方式
    solr全文检索实现原理
    LSM树以及在hbase中的应用
    MySQL的MyISAM与InnoDB的索引方式
    MySQL的innoDB存储引擎的运作方式,数据结构等
    Redis作缓存
    Redis的几点积累
    Redis数据库各种数据结构的内部实现。
    正则表达式!!!
  • 原文地址:https://www.cnblogs.com/aotian/p/3618288.html
Copyright © 2020-2023  润新知