`
duzc2
  • 浏览: 60900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Tomcat jdbc-pool 与 commons DBCP 的参数对比【翻译全部属性】

阅读更多

通用属性

属性名 描述(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 状态 true driver default
defaultReadOnly (boolean) 连接池创建的连接的默认的read-only 状态. 如果没有设置则setReadOnly 方法将不会被调用. ( 某些驱动不支持只读模式, 比如:Informix) driver default driver default
defaultTransactionIsolation

(String) 连接池创建的连接的默认的TransactionIsolation 状态. 下面列表当中的某一个: ( 参考javadoc)

  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE
driver default driver default
defaultCatalog (String) 连接池创建的连接的默认的catalog driver default
initialSize (int) 初始化连接: 连接池启动时创建的初始化连接数量,1.2 版本后支持 0 10
maxActive (int) 最大活动连接: 连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制 8 100
maxIdle

(int) 最大空闲连接: 连接池中容许保持空闲状态的最大连接数量, 超过的空闲连接将被释放, 如果设置为负数表示不限制

如果启用,将定期检查限制连接,如果空闲时间超过minEvictableIdleTimeMillis 则释放连接 参考testWhileIdle

8 与maxActive
minIdle

(int) 最小空闲连接: 连接池中容许保持空闲状态的最小连接数量, 低于这个数量将创建新的连接, 如果设置为0 则不创建如果连接验证失败将缩小这个值( 参考testWhileIdle

 

0

initialSize 相同

maxWait (int) 最大等待时间: 当没有可用连接时, 连接池等待连接被归还的最大时间( 以毫秒计数), 超过时间则抛出异常, 如果设置为-1 表示无限等待 无限  30000 (30 秒)
validationQuery

(String) SQL 查询, 用来验证从连接池取出的连接, 在将连接返回给调用者之前. 如果指定, 则查询必须是一个SQL SELECT 并且必须返回至少一行记录

查询不必返回记录,但这样将不能抛出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) 开启池的prepared statement 池功能

 

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) 当连接第一次建立时执行的SQL null

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) 避免过度验证,保证验证不超过这个频率——以毫秒为单位。如果一个连接应该被验证,但上次验证未达到指定间隔,将不再次验证。 3000030 秒)

jmxEnabled

是否将连接池注册到JMX true

fairQueue

(boolean) 如果被设为truegetConnection 方法将被以先进先出的方式对待。此属性使用 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 楼 HeartArea 2012-11-22  
这个不错,先留着

相关推荐

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    这两个JAR文件,`commons-dbcp-1.4.jar` 和 `commons-pool-1.5.6.jar`,在Java应用中起到了重要的角色,特别是对于那些需要高效管理数据库连接的大型系统。 Apache Commons DBCP是Apache Commons项目的一部分,它...

    commons-collections-3.1.jar;commons-dbcp-1.2.1.jar;commons-pool-1.2.jar

    标题中的三个文件——"commons-collections-3.1.jar","commons-dbcp-1.2.1.jar",和"commons-pool-1.2.jar",是Apache Commons项目的一部分,它们在Java应用程序中扮演着重要角色。Apache Commons是一个为Java开发...

    commons-dbcp-1.2.2.jar &commons-pool-1.3.jar

    `commons-dbcp-1.2.2.jar`包含了实现DBCP连接池所需的类和接口,如BasicDataSource、PoolableConnection和PoolManager等。这些类用于初始化和配置数据库连接池,管理数据库连接的生命周期,以及处理连接的分配和释放...

    commons-dbcp-1.4.jar和commons-pool-1.4.jar

    这两个JAR文件——commons-dbcp-1.4.jar和commons-pool-1.4.jar,是Apache软件基金会提供的开源组件,用于优化数据库资源的管理和复用。 **Apache Commons DBCP** Apache Commons DBCP 是一个基于Apache Commons ...

    commons中的DBCP连接池jar

    Apache Commons DBCP虽然历史悠久,但在现代项目中可能已经被更先进的连接池如HikariCP、Tomcat JDBC Pool所取代,因为它们在性能和稳定性方面有更出色的表现。然而,理解DBCP的工作原理和使用方法仍然是Java开发者...

    apache-tomcat-jdbc-1.1.0.1

    The JDBC Connection Pool org.apache.tomcat.jdbc.pool is a replacement or an alternative to the commons-dbcp connection pool.

    commons-dbcp-1.4-bin

    标题"commons-dbcp-1.4-bin"指的是Apache Commons DBCP的1.4版本的二进制发行版。这个版本包含了编译后的Java类文件和其他运行时需要的资源,可以直接在Java环境中使用而无需进行额外的编译步骤。 描述中提到了...

    java中DBCP数据库连接池使用方法以及jjdbc所需的ar包(commons-pool.jar+commons-dbcp-1.2.2.jar)

    java中DBCP数据库连接池使用方法以及代码文件:(dbcpconfig.properties+JdbcPool_dbcp.java)以及jjdbc所需的ar包(commons-pool.jar+commons-dbcp-1.2.2.jar)

    COMMONS DBCP的使用与配置

    Apache Commons DBCP(Database Connection Pool)是Apache Commons项目中的一个数据库连接池组件,它提供了在Java应用程序中管理和复用数据库连接的能力。DBCP的主要作用是提高应用性能,通过池化技术减少创建和...

    commons-pool-1.3.jar

    DBCP是Apache Commons的一个子项目,它提供了一个实现JDBC连接池的工具,而`BasicDataSource`是DBCP中用来管理数据库连接的核心类。 Apache Commons Pool是DBCP的基础,因为DBCP依赖于Pool来实现其对象池化功能。`...

    commons-dbcp-1.2.2-src.zip

    Apache Commons DBCP,全称为“Database Connection Pool”,是一个开源的Java数据库连接池组件,源自Apache Commons项目。这个组件在Java应用开发中扮演着重要的角色,特别是在构建基于JDBC的应用时,它提供了一种...

    tomcat_连接池数据库密码加密解密方法

    在Tomcat环境下,连接池通常使用Apache Commons DBCP(Database Connection Pool)来管理数据库连接。默认情况下,DBCP会直接读取配置文件中的用户名和密码,这意味着这些信息是以明文形式存在的。一旦服务器被非法...

    commons-dbcp-1.4-bin.zip

    1. **JAR文件**:通常包含`commons-dbcp-1.4.jar`,这是DBCP的核心库,其中封装了数据库连接池的实现,如`BasicDataSource`类,用于创建和管理数据库连接。 2. **文档**:可能包括API文档(如`apiDocs`目录下的HTML...

    commons-dbcp-1.4.jar

    1. 添加依赖:在Java项目中,需要将`commons-dbcp-1.4.jar`作为依赖引入,通常是通过Maven或Gradle等构建工具完成。 2. 配置连接池:创建一个配置文件,定义数据库的相关参数,如URL、用户名、密码等,以及DBCP的...

    数据源所需要Jar包:commons-dbcp2-2.1.1.zip

    这个“commons-dbcp2-2.1.1.zip”压缩包包含了DBCP2的特定版本(2.1.1)所需的全部资源,特别是其中的“commons-dbcp2-2.1.1.jar”文件,这是核心库,包含了DBCP2的所有功能。 数据库连接池(Database Connection ...

    commons-dbcp

    Apache Commons DBCP,全称为"Database Connection Pool",是Apache软件基金会开发的一个开源Java数据库连接池组件。这个库提供了一种有效管理数据库连接的方法,从而提高了应用在处理多个并发请求时的性能和效率。...

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    Apache Commons DBCP(Database Connection Pool)是一个开源的、基于Apache Commons项目的数据源池组件。它提供了一个实现JDBC(Java Database Connectivity)规范的连接池,可以显著提高数据库操作的性能,因为...

    DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试代码

    - **简介**:DBCP是Apache Commons的一个子项目,提供了一个基于 Jakarta POOL 的数据库连接池实现。 - **特性**:DBCP支持JNDI配置,具有基本的连接池功能,如连接验证、空闲连接检测等。 - **性能**:由于其...

    DBCP连接池所需完整架包(全)

    DBCP(DataBase connection pool),数据库连接池。...本资源内含Apache Commons Pool 2.4.2 (Java 6.0+)、Apache Commons DBCP 2.1.1 for JDBC 4.1 (Java 7.0+)、Apache Commons DBCP 1.4 for JDBC 4 (Java 6.0)。

Global site tag (gtag.js) - Google Analytics