Tomcat jdbc-pool 与 commons DBCP 的参数对比【翻译全部属性】
通用属性
属性名描述(DBCP/Tomcat jdbc-pool 差别)DBCP默认值jdbc-pool默认值username传递给JDBC驱动的用于建立连接的用户名password传递给JDBC驱动的用于建立连接的密码url传递给JDBC驱动的用于建立连接的URLdriverClassName使用的JDBC驱动的完整有效的java 类名connectionProperties(String) 当建立新连接时被发送给JDBC驱动的连接参数,格式必须是 [propertyName=property;]*注意:参数user/password将被明确传递,所以不需要包括在这里。?nulldefaultAutoCommit(boolean) 连接池创建的连接的默认的auto-commit状态truedriver default defaultReadOnly(boolean) 连接池创建的连接的默认的read-only状态. 如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix)driver defaultdriver default defaultTransactionIsolation
(String)连接池创建的连接的默认的TransactionIsolation状态. 下面列表当中的某一个: (参考javadoc)
(int) 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
如果启用,将定期检查限制连接,如果空闲时间超过minEvictableIdleTimeMillis 则释放连接(参考testWhileIdle)
8与maxActive minIdle(int) 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建如果连接验证失败将缩小这个值(参考testWhileIdle)
?
0与initialSize相同
maxWait(int) 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待无限?30000 (30 秒)validationQuery(String)SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQLSELECT并且必须返回至少一行记录
查询不必返回记录,但这样将不能抛出SQL异常
?nulltestOnBorrow(boolean) 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
参考validationInterval以获得更有效的验证
true?falsetestOnReturn(boolean) 指明是否在归还到池中前进行检验注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 false?falsetestWhileIdle
(boolean) 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
要启用空闲连接回收器线程,必须启用
false?falsetimeBetweenEvictionRunsMillis(int)在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程
这个值不应该小于1秒,它决定线程池多久验证连接空闲或丢弃连接。
-1?属性名描述默认值initSQL
jdbcInterceptors
(String)(**杜天微注:jdbc拦截器——jdbc-pool的高级扩展属性)用分号分隔的、继承org.apache.tomcat.jdbc.pool.JdbcInterceptor的类名列表。这些拦截器将被插入到对java.sql.Connection操作之前的拦截器链上。
预制的拦截器有:
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState - 追踪自动提交、只读状态、catalog和事务隔离等级等状态。(keeps track of auto commit, read only, catalog and transaction isolation level.)
org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer - 追踪打开的statement,当连接被归还时关闭它们。(keeps track of opened statements, and closes them when the connection is returned to the pool.)
更多预制拦截器详细描述请参见JDBC拦截器部分(**杜天微注:英文内容)。
nullvalidationInterval
(long) 避免过度验证,保证验证不超过这个频率——以毫秒为单位。如果一个连接应该被验证,但上次验证未达到指定间隔,将不再次验证。30000(30秒)jmxEnabled
是否将连接池注册到JMXtruefairQueue
abandonWhenPercentageFull
(int)正在被使用的连接超过这个百分比以前被丢弃的连接不会被断开或报告。这个值应被设为0-100之间。默认值为0,意味着达到removeAbandonedTimeout时将被尽快关闭。0maxAge
?(long)保持连接的最大毫秒数。当一个连接被归还时,连接池将检查是否满足:现在时间-连接时长>maxAge,如果条件满足,连接将被关闭而不是回到池中。默认值为0,标识禁用该功能。?0
useEquals
?(boolean)如果希望ProxyConnection类使用String.equals方法对比方法名,设为true;否则将使用==判断。这个属性不会影响单独配置的拦截器。?truesuspectTimeout(怀疑超时)
(int)以秒为单位的超时时间。类似removeAbandonedTimeout,但不会将连接丢弃甚至关闭,如果logAbandoned为true,则只是记录一个警告。如果这个值小于等于0,不会有怀疑超时检测被执行。怀疑检测只有当超时时间大于0并且连接未丢弃,或者丢弃检测被禁用的情况下才占用空间。如果一个连接被怀疑,将记录一条警告消息,并发送一个JMX通知。?0rollbackOnReturn
?(boolean)如果autoCommit==false,当连接被归还时,通过调用连接的rollback方法中断事务。?falsecommitOnReturn?(boolean)如果autoCommit==false,当连接被归还时,通过调用连接的commit方法完成事务。如果rollbackOnReturn==ture,这个属性将被忽略。?false
alternateUsernameAllowed
(boolean)为了提高性能,默认情况下,jdbc-pool将忽略DataSource.getConnection(username,password)调用,直接返回一个以已有的全局配置的用户名和密码创建的连接。连接池仍然可以用不同的用户名和密码,但已经通过旧的用户名和密码创建的连接将被关闭,然后重新以新的用户名和密码连接。这样连接池将以全局级别管理连接数,而不是schema级别。设置这个属性为true来启用DataSource.getConnection(username,password)方法描述的行为。
这个属性为bug 50025 增加。
?falsedataSource
?(javax.sql.DataSource)向连接池注入一个数据源,连接池将使用这个数据源索取连接,而不是通过java.sql.Driver接口建立。当您希望池化XA连接或者使用数据源而不是url时,这个属性非常有用。?nulldataSourceJNDI
(String)用来建立数据连接的JNDI名称。参考dataSource属性。nulluseDisposableConnectionFacade
(boolean)如果您希望在连接上建立一道屏障防止连接关闭之后被重新使用,设置这个属性为true。这个属性用来预防线程保持已关闭连接的引用,并在上面执行查询动作。truelogValidationErrors
(boolean)如果设置为true,将在验证相位时向日志文件写入错误。如果值为true,错误将被记录为SEVER。默认值是false以向后兼容。falsepropagateInterruptState
(boolean)设置这个属性为true,可以传播一个被中断的线程(还没有清除中断状态)的中断状态。默认值为false以向后兼容。false?