设为首页 收藏本站
查看: 668|回复: 0

[经验分享] Tomcat jdbc-pool 与 commons DBCP 的参数对比【翻译全部属性】

[复制链接]

尚未签到

发表于 2017-2-9 11:11:04 | 显示全部楼层 |阅读模式
通用属性

属性名描述(DBCP/Tomcat jdbc-pool差别)DBCP默认值jdbc-pool默认值
username传递给JDBC驱动的用于建立连接的用户名
password传递给JDBC驱动的用于建立连接的密码
url传递给JDBC驱动的用于建立连接的URL
driverClassName使用的JDBC驱动的完整有效的java 类名
connectionProperties(String) 当建立新连接时被发送给JDBC驱动的连接参数,格式必须是 [propertyName=property;]*
注意:参数user/password将被明确传递,所以不需要包括在这里。
 null
defaultAutoCommit(boolean) 连接池创建的连接的默认的auto-commit状态truedriver default
defaultReadOnly(boolean) 连接池创建的连接的默认的read-only状态. 如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix)driver defaultdriver default
defaultTransactionIsolation
(String)连接池创建的连接的默认的TransactionIsolation状态. 下面列表当中的某一个: (参考javadoc)


  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ


  • SERIALIZABLE
driver defaultdriver default
defaultCatalog(String) 连接池创建的连接的默认的catalogdriver default
initialSize(int)初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持 010
maxActive(int) 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制8100
maxIdle  (int) 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
  如果启用,将定期检查限制连接,如果空闲时间超过minEvictableIdleTimeMillis 则释放连接参考testWhileIdle
8与maxActive
minIdle  (int) 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建如果连接验证失败将缩小这个值(参考testWhileIdle
0
initialSize相同
maxWait(int) 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待无限 30000 (30 秒)
validationQuery  (String)SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQLSELECT并且必须返回至少一行记录
  查询不必返回记录,但这样将不能抛出SQL异常
 null
testOnBorrow  (boolean) 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
  参考validationInterval以获得更有效的验证
true false
testOnReturn(boolean) 指明是否在归还到池中前进行检验
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
false false
testWhileIdle  (boolean) 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
  要启用空闲连接回收器线程,必须启用
false false
timeBetweenEvictionRunsMillis  (int)在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程
  这个值不应该小于1秒,它决定线程池多久验证连接空闲或丢弃连接。
-1  5000 (5 seconds)
numTestsPerEvictionRun  (int)在每次空闲连接回收器线程(如果有)运行时检查的连接数量
  jdbc-pool中未使用此属性
3 -
minEvictableIdleTimeMillis连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒1000 * 60 * 30(30分钟) 60000 (60 秒)
poolPreparedStatements  (boolean)开启池的preparedstatement 池功能
  jdbc-pool中未使用此属性
false
maxOpenPreparedStatements  (int)statement池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制
  jdbc-pool中未使用此属性
不限制
accessToUnderlyingConnectionAllowed  (boolean) 控制PoolGuard是否容许获取底层连接
  jdbc-pool中未使用此属性;可以通过调用连接的unwrap方法取得控制权。参考javax.sql.DataSource接口,通过反射调用getConnection方法,或强制转换为javax.sql.PooledConnection对象。
false -
removeAbandoned  (boolean)标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接.
  参考logAbandoned
false false
removeAbandonedTimeout  (int)泄露的连接可以被删除的超时值, 单位秒
  这个值应该设为应用中查询执行最长的时间
300 60
logAbandoned(boolean)标记当Statement或连接被泄露时是否打印程序的stack traces日志。被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,因为需要生成stack trace。false false
Tomcat jdbc-pool 新增属性

属性名描述默认值
validatorClassName(String)实现org.apache.tomcat.jdbc.pool.Validator接口的类名,必须存在默认或明确的无参构造方法。将建立一个指定类的实例作为验证器,用来代替执行查询的连接验证。例如:com.mycompany.project.SimpleValidator。null
initSQL
(String)当连接第一次建立时执行的SQLnull
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拦截器部分(**杜天微注:英文内容)。
null
validationInterval
(long) 避免过度验证,保证验证不超过这个频率——以毫秒为单位。如果一个连接应该被验证,但上次验证未达到指定间隔,将不再次验证。30000(30秒)
jmxEnabled
是否将连接池注册到JMXtrue
fairQueue
(boolean) 如果被设为true,getConnection方法将被以先进先出的方式对待。此属性使用 org.apache.tomcat.jdbc.pool.FairBlockingQueue实现闲置连接列表。
如果需要使用异步连接回收,这个标记是必须的。
这个标记确保线程取得连接的顺序和他们调用getConnection方法的顺序是相同的。
在性能测试中,这个标记对锁和锁等待有非常大的影响。当fairQueue=true,将有一个依赖于操作系统的线程作为决定线程。如果是Linux系统(系统属性os.name=Linux)可以在线程池的类加载之前设置系统属性 org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true关闭Linux特定行为但仍然使用公平队列
true
abandonWhenPercentageFull
(int)正在被使用的连接超过这个百分比以前被丢弃的连接不会被断开或报告。这个值应被设为0-100之间。默认值为0,意味着达到removeAbandonedTimeout时将被尽快关闭。0
maxAge
 (long)保持连接的最大毫秒数。当一个连接被归还时,连接池将检查是否满足:现在时间-连接时长>maxAge,如果条件满足,连接将被关闭而不是回到池中。默认值为0,标识禁用该功能。
 0
useEquals
 (boolean)如果希望ProxyConnection类使用String.equals方法对比方法名,设为true;否则将使用==判断。这个属性不会影响单独配置的拦截器。 true
suspectTimeout(怀疑超时)
(int)以秒为单位的超时时间。类似removeAbandonedTimeout,但不会将连接丢弃甚至关闭,如果logAbandoned为true,则只是记录一个警告。如果这个值小于等于0,不会有怀疑超时检测被执行。怀疑检测只有当超时时间大于0并且连接未丢弃,或者丢弃检测被禁用的情况下才占用空间。如果一个连接被怀疑,将记录一条警告消息,并发送一个JMX通知。 0
rollbackOnReturn
 (boolean)如果autoCommit==false,当连接被归还时,通过调用连接的rollback方法中断事务。 false
commitOnReturn (boolean)如果autoCommit==false,当连接被归还时,通过调用连接的commit方法完成事务。如果rollbackOnReturn==ture,这个属性将被忽略。
 false
alternateUsernameAllowed
  (boolean)为了提高性能,默认情况下,jdbc-pool将忽略DataSource.getConnection(username,password)调用,直接返回一个以已有的全局配置的用户名和密码创建的连接。连接池仍然可以用不同的用户名和密码,但已经通过旧的用户名和密码创建的连接将被关闭,然后重新以新的用户名和密码连接。这样连接池将以全局级别管理连接数,而不是schema级别。设置这个属性为true来启用DataSource.getConnection(username,password)方法描述的行为。
  这个属性为bug 50025增加。
 false
dataSource
 (javax.sql.DataSource)向连接池注入一个数据源,连接池将使用这个数据源索取连接,而不是通过java.sql.Driver接口建立。当您希望池化XA连接或者使用数据源而不是url时,这个属性非常有用。 null
dataSourceJNDI
(String)用来建立数据连接的JNDI名称。参考dataSource属性。null
useDisposableConnectionFacade
(boolean)如果您希望在连接上建立一道屏障防止连接关闭之后被重新使用,设置这个属性为true。这个属性用来预防线程保持已关闭连接的引用,并在上面执行查询动作。true
logValidationErrors
(boolean)如果设置为true,将在验证相位时向日志文件写入错误。如果值为true,错误将被记录为SEVER。默认值是false以向后兼容。false
propagateInterruptState
(boolean)设置这个属性为true,可以传播一个被中断的线程(还没有清除中断状态)的中断状态。默认值为false以向后兼容。false

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-339698-1-1.html 上篇帖子: jQuery实战中第八章配置tomcat虚拟目录的问题 下篇帖子: 两种jdk版本的多个tomcat按windows服务的安装问题的解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表