Tomcat jdbc pool配置和使用

来源:互联网 发布:做图软件 编辑:程序博客网 时间:2024/05/18 13:06

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目录下。

下面是我写的一个小demo:

 

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数据库连接驱动###############################数据库连接URLurl=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##############################连接池配置######################################


 

 

0 0
原创粉丝点击