BasicDataSource的池配置属性

  BasicDataSource的池配置属性


池配置属性


指定的内容

initialSize 池启动时创建的连接数量
maxActive 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。
maxIdle 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。
maxOpenPreparedStatements 同一时间能够从语句池里分配的已备语句的最大数量。设置为0时表示无限制。
maxWait 在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。
minEvictableIdleTimeMillis 连接保持空闲而不被驱逐的最长时间。
minIdle 在不新建连接的条件下,池中保持空闲的最少连接数。
poolPreparedStatements 是否对已备语句进行池管理(布尔值)。
jdbc.properties文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/vbox?rewriteBatchedStatements=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
#<!--initialSize: 初始化连接-->
jdbc.initialSize=10
#<!--maxActive: 最大连接数量-->
jdbc.maxActive=500
tcp.PORT=28577
#<!-- 设置多少毫秒的间隔-->
baidu.pinglv=5
#<!-- 初始化连接 -->
dataSource.initialSize=10
#<!-- 最大空闲连接 -->
dataSource.maxIdle=20
#<!-- 最小空闲连接 -->
dataSource.minIdle=5
#<!--最大连接数量 -->
dataSource.maxActive=50
#<!--是否在自动回收超时连接的时候打印连接的超时错误 -->
dataSource.logAbandoned=true
#<!--是否自动回收超时连接 -->
dataSource.removeAbandoned=true
#<!--超时时间(以秒数为单位) -->
dataSource.removeAbandonedTimeout=180
#<!--超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
dataSource.maxWait=1000
#<!--取得连接时是否进行有效性验证(即是否还和数据库连通的)-->
dataSource.testOnBorrow=true
#<!--返回连接时是否进行有效性验证(即是否还和数据库连通的)-->
dataSource.testOnReturn=true
#<!--连接空闲时是否进行有效性验证(即是否还和数据库连通的)-->
dataSource.testWhileIdle=true
#<!--他们两个配合,可以持续更新连接池中的连接对象,当timeBetweenEvictionRunsMillis 大于0时,-->
#<!--每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。-->
dataSource.timeBetweenEvictionRunsMillis=3
dataSource.minEvictableIdleTimeMillis=12
java类的书写:
/**
 * HttpClient练习
 * studyHttpClient
 * cn.yuchao.httpclient
 * BasicDataSourceDemo.java
 * 创建人:yuchao
 * 时间:2015-11-6-上午09:56:03
 * 2015-版权个人所有
 */
package cn.yuchao.httpclient;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * BasicDataSourceDemo
 * 创建人:yuchao
 * 时间:2015-11-6-上午09:56:03
 * @version 1.0.0
 *
 */
public class BasicDataSourceDemo {

    private static final Logger log  = LoggerFactory.getLogger(BasicDataSourceDemo.class);

    public static void main(String[] args) {

          Properties dbProps =new Properties();
          Connection connection =null;
            try {
                 dbProps.load(BasicDataSourceDemo.class.getResourceAsStream("/jdbc.properties"));
                 System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
                 String driverClassName = dbProps.getProperty("jdbc.driverClassName");
                 String url = dbProps.getProperty("jdbc.url");
                 String username = dbProps.getProperty("jdbc.username");
                 String password = dbProps.getProperty("jdbc.password");

                 String initialSize = dbProps.getProperty("dataSource.initialSize");
                 String minIdle = dbProps.getProperty("dataSource.minIdle");
                 String maxIdle = dbProps.getProperty("dataSource.maxIdle");
                 String maxWait = dbProps.getProperty("dataSource.maxWait");
                 String maxActive = dbProps.getProperty("dataSource.maxActive");
                 String timeBetweenEvictionRunsMillis =dbProps.getProperty("dataSource.timeBetweenEvictionRunsMillis");
                 String minEvictableIdleTimeMillis =dbProps.getProperty("dataSource.minEvictableIdleTimeMillis");

                 //取得连接时是否进行有效性验证(即是否还和数据库连通的)
                 boolean testOnBorrow = Boolean.valueOf(dbProps.getProperty("dataSource.testOnBorrow","true")).booleanValue();
                 //返回连接时是否进行有效性验证(即是否还和数据库连通的)
                 boolean testOnReturn = Boolean.valueOf(dbProps.getProperty("dataSource.testOnReturn","true")).booleanValue();
                 //连接空闲时是否进行有效性验证(即是否还和数据库连通的)
                 boolean testWhileIdle = Boolean.valueOf(dbProps.getProperty("dataSource.testWhileIdle","true")).booleanValue();
                 //是否在自动回收超时连接的时候打印连接的超时错误
                 boolean logAbandoned = Boolean.valueOf(dbProps.getProperty("dataSource.logAbandoned","false")).booleanValue();
                //是否自动回收超时连接
                 boolean removeAbandoned = (Boolean.valueOf(dbProps.getProperty("dataSource.removeAbandoned","false"))).booleanValue();
                 //超时时间(以秒数为单位)
                 int removeAbandonedTimeout = Integer.parseInt(dbProps.getProperty("dataSource.removeAbandonedTimeout","300"));

                 BasicDataSource dataSource = new BasicDataSource();
                 dataSource.setDriverClassName(driverClassName);
                 dataSource.setUrl(url);
                 dataSource.setUsername(username);
                 dataSource.setPassword(password);

                 //初始化连接数
                 if (StringUtils.isNotBlank(initialSize)) {
                    dataSource.setInitialSize(Integer.parseInt(initialSize));
                }
                //最小空闲连接数
                if (StringUtils.isNotBlank(minIdle)) {
                    dataSource.setMinIdle(Integer.parseInt(minIdle));
                }
                 //最大空闲连接数
                if (StringUtils.isNotBlank(maxIdle)) {
                    dataSource.setMinIdle(Integer.parseInt(maxIdle));
                }
                //超时回收时间(以毫秒为单位)
                if (StringUtils.isNotBlank(maxWait)) {
                    dataSource.setMinIdle(Integer.parseInt(minIdle));
                }
                //最大连接数
                if (StringUtils.isNotBlank(maxActive)) {
                    dataSource.setMinIdle(Integer.parseInt(minIdle));
                }

                if (StringUtils.isNotBlank(minEvictableIdleTimeMillis)) {

                }
                //是否在自动回收超时连接的时候打印连接的超时错误
                dataSource.setLogAbandoned(logAbandoned);
                //是否自动回收超时连接
                dataSource.setRemoveAbandoned(removeAbandoned);
                //超时时间(以秒数为单位)
                dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
                //取得连接时是否进行有效性验证(即是否还和数据库连通的)
                dataSource.setTestOnBorrow(testOnBorrow);
                //返回连接时是否进行有效性验证(即是否还和数据库连通的)
                dataSource.setTestOnReturn(testOnReturn);
                //连接空闲时是否进行有效性验证(即是否还和数据库连通的)
                dataSource.setTestWhileIdle(testWhileIdle);

                if(StringUtils.isNotBlank(timeBetweenEvictionRunsMillis)){
                     dataSource.setTimeBetweenEvictionRunsMillis(Long.parseLong(timeBetweenEvictionRunsMillis));
                }

                /**
                 * 他们两个配合,可以持续更新连接池中的连接对象,当timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,
                 * 就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。
                 * */
                if(StringUtils.isNotBlank(timeBetweenEvictionRunsMillis)){
                     dataSource.setTimeBetweenEvictionRunsMillis(Long.parseLong(timeBetweenEvictionRunsMillis));
                }

                if(StringUtils.isNotBlank(minEvictableIdleTimeMillis)){

                     dataSource.setMinEvictableIdleTimeMillis(Long.parseLong(minEvictableIdleTimeMillis));
                }

                try {
                     connection = dataSource.getConnection();
                     System.out.println("从BasicDataSource池中获取连接:"+connection);
                } catch (SQLException e) {
                    e.printStackTrace();
                    log.info("对不起连接数据库失败,请查看您的配置.......");
                }

            } catch (IOException e) {

                e.printStackTrace();

            }finally{

                try {
                    if (null!=connection) {
                        //将连接释放到 BasicDataSource池中
                        connection.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    }
}
				
时间: 2024-10-10 15:27:20

BasicDataSource的池配置属性的相关文章

MySQL---数据库从入门走向大神系列(十三)-BasicDataSource创建DataSource(DBCP连接池配置)

DBCP(DataBase connection pool),数据库连接池.是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件.单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去. 首先,下载必须的jar包 dbcp包,目前版本是2.1.1 : htt

tomcat数据库连接池配置

tomcat7增强了数据库连接池功能,连接池配置如下: <Resource name="jdbc/ecp" auth="Container" type="javax.sql.DataSource" maxActive="300" maxIdle="100" maxWait="10000" username="xm_db_portal" factory="

【Java】java数据库连接池配置的几种方法

今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(已Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,内容如下: <Context>      <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource" 

连接池配置 - tomcat7

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个 应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时 间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 数据库连接池在初始化时将创建一定数量的数据库连

[转] 数据库链接池配置

转自:http://blog.163.com/try_boy/blog/static/1786865622012128111537267/ 今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(已Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,内容如下: <Context>      <Resource name="jdbc/test&q

Hibernate 中配置属性详解(hibernate.properties)

Hibernate能在各种不同环境下工作而设计的, 因此存在着大量的配置参数.多数配置参数都 有比较直观的默认值, 并有随 Hibernate一同分发的配置样例hibernate.properties 来展示各种配置选项. 所需做的仅仅是将这个样例文件复制到类路径 (classpath)下并做一些自定义的修改. 属性1.Hibernate JDBC属性 属性名 用途 hibernate.connection.driver_class jdbc驱动类 hibernate.connection.ur

Tomcat6.0数据库连接池配置

http://blog.163.com/magicc_love/blog/static/185853662201111101130969/ oracle驱动包Tomcat 6.0配置oracle数据库连接池 安装Tomcat后,在我的电脑-属性—>高级-->环境变量系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat); CATALINA_HOME: c:\tomcat CATALINA_BASE: c:\tomcat TOMCAT_HOME: c:\tomcat 然后修改

DBCP连接池配置参数说明

<!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property n

C3P0连接池配置

C3P0是一个开源的JDBC连接池,详情请google. 在spring中,C3P0的一些配置,介绍如下(只列了一部分,不是全部) C3P0更详细的配置项及其含义,请参考:http://www.mchange.com/projects/c3p0/index.html <!-- c3p0连接池配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&g