dbcp官网:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
文档:http://commons.apache.org/proper/commons-dbcp/configuration.html
BasicDataSource Configuration 配置参数
Parameter | Descripton |
---|
username | 用来建立jdbc连接的用户名 |
password | 用来建立jdbc连接的密码 |
url | 建立连接的url |
driverClassName | jdbc driver className |
connectionProperties | 连接使用的properties.使用的格式必须是[propertyName=property;]* |
properties配置:
Parameter | default | Description |
---|
defaultAutoCommit | driver default | 这个连接池默认的自动提交状态.如果没有设置,setAutoCommit方法不会被调用 |
defaultReadOnly | driver default | 这个连接池默认的读写状态。如果没有设置,setReadOnly方法就不会调用(一些数据库不支持readOnly模式,比如informix) |
defaultTransactionIsolation | driver default | 默认的隔离级别.必须是其中一个(NONE,READ_COMMITTED,READ_UNCOMMITTED,REPEATABLE_READ,SERIALIZABLE) |
defaultCatalog | | 连接池默认创建的连接数 |
cacheState | true | 如果是true, 连接池将会缓存readOnly和auto Commit配置,在第一次进行读或者写的时候.这会减少以后的数据库查询.如果获取连接后,这个连接自己设置readOnly和自动提交设置,这些配置不会影响到当前中的配置。在这种情况下,如果我们想要这种设置生效,caching应该把这个设置成disable. |
defaultQueryTimeout | null | 如果不是null,这个Integer的value将会用来衡量timeout,从连接创建时就开始计算。null意味着driver default将会被使用. |
enableAutocommitOnReturn | true | 如果是true,连接如果返回到池的时候,将会检查是否被设置成了autoAutoCommit为false,那么就会调用Connection.setAutoCommit(true) |
roolbackOnReturn | true | True意味着如果设置了autoCommit为false和readonly胃false的时候,当回到连接池的时候就回滚 |
Parameter | Default | Description |
---|
initialSize | 0 | 连接池创建的时候,建立的连接数.从1.2起 |
maxTotal | 8 | 一个时间最大的活跃连接数,负数代表没有上限 |
maxIdle | 8 | 最大的idle保持数,其他的将会释放,负数代表没有上限 |
minIdle | 0 | 最小的idle保持数,其他的将会被创建,0代表不保持 |
maxWaitMillis | indefinitely | 获取连接最大等待时间,-1代表一直等 |
Parameter | Default | Description |
---|
validationQuery | | 在返回连接前,是否进行验证。如果使用,必须使用一个SQL SELECT返回至少一行.如果没有配置,连接调用isValid()方法. |
validationQueryTimeout | no timeout | 连接验证超时的秒数,如果设置为正数,将会用来验证连接的sql执行 |
testOnCreate | false | 在连接创建时,是否进行验证。如果验证失败,从连接池获取就会失败. |
testOnBorrow | true | 在从池中借连接的时候是否验证。如果验证失败,就会放弃这个连接,试图获取另外一个. |
testOnReturn | true | 在返回连接给连接池的时候,是否进行验证. |
testWhileIdle | false | 空闲连接是否进行验证,如果失败,就会从连接池去除. |
timeBetweenEvictionRunsMillis | -1 | 空闲连接验证执行的时间间隔,负数将会代表不会执行 |
numTestsPerEvictionRun | 3 | 执行空闲连接验证的线程数. |
minEvictableIdleTimeMillis | 1000 * 60 * 30 | 空闲保持时间,在这时间之后再进行空闲验证 |
softMinEvictableIdleTimeMillis | -1 | 这个是空闲保持时间的软限制,如果设置最小空闲保持时间(这时候不考虑需要保持空闲连接数),则先和最小空闲保持时间对比,再和这个参数比。 |
maxConnLifetimeMillis | -1 | 连接最大的生命时间。如果超过了这个时间,那么在下次活跃,不活跃或者验证测试的时候就会失败。0或者小于0代表连接没有生命上限 |
logExpiredConnections | true | 是否记录超时的连接数 |
connectionInitSqls | null | 建立连接的时候调用的sql,只有在connection fatory创建的时候调用 |
lifo | true | 这个一个队列模式lifo(last in first out)。如果设置为false,则为FIFO |
Parameter | Default | Description |
---|
accessToUnderlyingConnectionAllowed | false | 是否可以PoolGuard可以获取底层连接 |
removeAbandonedOnMaintenance removeAbandonedOnBorrow | false | 这个是用来保证应用程序关闭连接失败的情况。在超时不使用并且超过抛弃时间后就会被抛弃掉。条件超时,还有其他条件:getNumActive() > getMaxTotal() - 3; and getNumIdle() < 2 |
removeAbandonedTimeout | 300 | 抛弃的时间 |
logAbandoned | false | 是否记录abandoned的日志 |
abandonedUsageTracking | false | 是否记录trace,debug的时候比较有用 |
fastFailValidation | false | 这个设置为true的时候,validation快速失败当connection抛出fatal SqlException的时候。当对一个已经关闭的连接发出isValid方法和一个合法query的时候,就会快速失败.SQL_STATE默认是:(57P01 (ADMIN SHUTDOWN) 57P02 (CRASH SHUTDOWN) 57P03 (CANNOT CONNECT NOW) 01002 (SQL92 disconnect error) JZ0C0 (Sybase disconnect error) JZ0C1 (Sybase disconnect error) Any SQL_STATE code that starts with “08”) 可以通过设置disconnectionSqlCodes属性进行override |
disconnectionSqlCodes | null | 配合fastValidation使用,用来设置需要包括的sql_state |