日期:2014-05-16  浏览次数:20436 次

学习dbcp连接池----各个参数的基本含义
BasicDataSource

/**
     * Creates a JDBC connection factory for this datasource.  This method only
     * exists so subclasses can replace the implementation class.
     */
    protected ConnectionFactory createConnectionFactory() throws SQLException {
        。。。。。。。。。。。。
        。。。。。。。。。。。。
        if (validationQuery == null) {//测试的sql语句
            setTestOnBorrow(false);
            setTestOnReturn(false);
            setTestWhileIdle(false);
        }
        。。。。。。。。。。。。
        。。。。。。。。。。。。
    }

protected void createConnectionPool() {
        // Create an object pool to contain our active connections
        GenericObjectPool gop;
       
        //abandonedConfig.setRemoveAbandoned(removeAbandoned); 是否清理为关闭的活动连接
        //abandonedConfig.setRemoveAbandonedTimeout(removeAbandonedTimeout); 多长时间未使用为超时时间
        //abandonedConfig.setLogAbandoned(logAbandoned); 连接池收回空闲的活动连接时是否打印消息
       
        if ((abandonedConfig != null) && (abandonedConfig.getRemoveAbandoned())) {
            gop = new AbandonedObjectPool(null,abandonedConfig);
        }
        else {
            gop = new GenericObjectPool();
        }
        gop.setMaxActive(maxActive);//连接池支持的最大连接数
        gop.setMaxIdle(maxIdle);//最多空闲多少
        gop.setMinIdle(minIdle);//最少空闲多少
        gop.setMaxWait(maxWait);//连接池中连接用完时,新的请求等待时间,毫秒
        gop.setTestOnBorrow(testOnBorrow);//获取连接时是否测试一下
        gop.setTestOnReturn(testOnReturn);//归还连接时是否测试一下
       
       
        gop.setTestWhileIdle(testWhileIdle);//是否检测空闲池
        gop.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);//空闲池清理线程休眠时间
        gop.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);//空闲池中连接超时时间
        gop.setNumTestsPerEvictionRun(numTestsPerEvictionRun);//空闲池清理线程时每次test几次
       
        connectionPool = gop;
    }
需要注意的是removeAbandoned的配置不同最后建立的连接池是不一样的。