当前位置: 代码迷 >> 综合 >> Tomcat DBCP 连接池参数列表
  详细解决方案

Tomcat DBCP 连接池参数列表

热度:88   发布时间:2023-12-17 17:33:33.0

 

Tomcat DBCP 连接池参数列表

分类: tomcat   327人阅读  评论(0)  收藏  举报
Tomcat DBCP 连接池参数列表
2008-08-15 15:21
Tomcat DBCP 连接池参数列表

javadoc。)

参数
说明

username
JDBC驱动建立连接时所需的用户名。

password
JDBC驱动建立连接时所需的用户密码。

url
JDBC驱动建立连接时的连接地址。

driverClassName
使用的JDBC驱动完整JAVA类名。

connectionProperties
JDBC驱动建立连接时附带的连接属性
属性的格式必须为这样:[属性名=property;] *
注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。


参数
默认值
说明

defaultAutoCommit
true
指定由连接池所创建的连接的自动提交(auto-commit)状态。

defaultReadOnly
driver default
指定由连接池所创建的连接的只读(read-only)状态。如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)

defaultTransactionIsolation
driver default
指定由连接池所创建的连接的事务级别(TransactionIsolation)。可用值为下列之一:(详情可见

  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE

defaultCatalog
指定由连接池所创建的连接的默认日志。


参数
默认值
说明

initialSize
0
初始化连接池时创建的连接数。
此版后开始提供:1.2

maxActive
8
连接池允许的最大并发连接数,值为非正数时表示不限制。

maxIdle
8
连接池中的最大空闲连接数,超过此数值时多余的空闲连接将会被释放,值为负数时表示不限制。

minIdle
0
连接池中的最小空闲连接数,低于此数值时将会创建所欠缺的连接,值为0时表示不创建。

maxWait
indefinitely
以毫秒表示的当连接池中没有可用连接时等待可用连接返回的时间,超时则抛出异常,值为-1时无限期等待。


参数
默认值
说明

validationQuery
在连接返回给调用者前用于校验连接是否有效的SQL语句。如果指定了SQL语句,则必须为一个“SELECT”语句,且至少会返回一行结果。

testOnBorrow
true
指定连接被调用时是否经过校验。如果校验未通过,则该连接被连接池断掉,并由连接池尝试调用另一个连接。
注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

testOnReturn
false
指定连接返回到池中时是否经过校验。
注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

testWhileIdle
false
指定连接进入空闲状态时是否经过空闲对象驱逐进程的校验(如果存在空闲对象驱逐进程)。如果校验未通过,则该连接被连接池断掉。
注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

timeBetweenEvictionRunsMillis
-1
以毫秒表示的空闲对象驱逐进程由运行状态进入休眠状态的数值。值为非正数时表示不运行任何空闲对象驱逐进程。

numTestsPerEvictionRun
3
连接池检查每个空闲对象驱逐进程的对象数量(如果存在空闲对象驱逐进程)。

minEvictableIdleTimeMillis
1000 * 60 * 30
以毫秒表示的连接被空闲对象驱逐进程驱逐前在池中保持空闲状态的最小时间(如果存在空闲对象驱逐进程)。


参数
默认值
说明

poolPreparedStatements
false
启用“PreparedStatements”缓存池。

maxOpenPreparedStatements
unlimited
由“PreparedStatements”缓存池中取得“PreparedStatements”的最大并发数值,值为0时表示不限制。

此组件也有能力对“PreparedStatements”对象进行缓存。当启用了“PreparedStatements”缓存池时,每个连接通过下列方法建立的“PreparedStatements”对象都会被放入缓存池:

  • public PreparedStatement prepareStatement(String sql)
  • public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

注意:请保证你的连接有剩余的资源为给其他语句。


参数
默认值
说明

accessToUnderlyingConnectionAllowed
false
控制是否允许“PoolGuard”优先使用连接。

启用此项后,你可以按照下列方法优先使用连接:

Connection conn = ds.getConnection();Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();...conn.close()

默认为“false”,这是一个具有潜在威胁的选项,不当的程序可能会做出可怕的事情来(在关闭优先连接或当被守护的连接已经关闭后继续使用优先连接的时候)。小心并且尽量只在当你需要直接驱动指定的扩展时使用。

注意:不要关闭优先连接,它只有一个。


参数
默认值
说明

removeAbandoned
false
是否清除已经超过“removeAbandonedTimout”设置的无效连接。
如果值为“true”则超过“removeAbandonedTimout”设置的无效连接将会被清除。设置此属性可以从那些没有合适关闭连接的程序中恢复数据库的连接。

removeAbandonedTimeout
300
以秒表示的清除无效连接的时限。

logAbandoned
false
当清除无效连接时是否在日志中记录清除信息的标志。
记录无效的语句和连接,并附加每个连接开启或新建一个语句的系统开销。

如果你启用了“removeAbandoned”,可能会导致被设为无效的连接被连接池回收。这个机制将会在满足下列两个条件时启动:(getNumIdle() < 2) 和 (getNumActive() > getMaxActive() - 3)

例如:假设maxActive=20,而当前已经拥有18个活动连接,1个空闲连接,“removeAbandoned”机制将会启动。 但是只有在活动连接没有使用的时长超过“removeAbandonedTimeout”(默认为300秒)的连接被清除。在遍历结果集时,所使用的连接不会被标为活动连接。

 

转载自【http://www.jackytsu.com/upload/dbcp.html

 

【以下是我自己总结】

在hibernate配置文件中设置c3p0-0.9.1.1.jar DBCP的连接池

<!--数据库连接池-->   
<property   name="hibernate.c3p0.max_size">5</property>   
<property   name="hibernate.c3p0.min_size">2</property>   
<property   name="hibernate.c3p0.timeout">15000</property>   
<property   name="hibernate.c3p0.max_statements">1000</property>   
<property   name="hibernate.c3p0.idle_test_period">3000</property>   
<property   name="hibernate.c3p0.acquire_increment">5</property>   
<property   name="hibernate.c3p0.validate">false</property>   
<property   name="hibernate.connection.provider_class">   
org.hibernate.connection.C3P0ConnectionProvider   
</property>  

 

【tomcat5.5的DBCP配置】

先将 数据库驱动jar包放在 common/lib中,让后改写 conf中的server.xml,如下:

<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
    <Environment
      name="simpleValue"
      type="java.lang.Integer"
      value="30"/>
    <Resource
      name="jdbc/innovate"
      type="javax.sql.DataSource"
      maxActive="10"
      removeAbandonedTimeout="1"
      removeAbandoned="true"
      logAbandoned="false"
      maxIdle="3"
      maxWait="10000"
      driverClassName="oracle.jdbc.driver.OracleDriver"
      username="kw_data"
      password="newmanager"
      url="jdbc:oracle:thin:@192.168.200.104:1521:cxgkf"/>
    <Resource
      auth="Container"
      description="User database that can be updated and saved"
      name="UserDatabase"
      type="org.apache.catalina.UserDatabase"
      pathname="conf/tomcat-users.xml"
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
</GlobalNamingResources>
<Service
      name="Catalina">
    <Connector
        port="8080"
        redirectPort="8443"
        minSpareThreads="25"
        connectionTimeout="20000"
        maxSpareThreads="75"
        maxThreads="150">
    </Connector>
    <Connector
        port="8009"
        redirectPort="8443"
        protocol="AJP/1.3">
    </Connector>
    <Engine
        defaultHost="localhost" name="Catalina">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
      <Host
          appBase="webapps" name="localhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
           <Context   docBase="Innovate" path="/Innovate" privileged="true" reloadable="false" crossContext="true">
                      <ResourceLink name="jdbc/innovate" global="jdbc/innovate" type="javax.sql.DataSource"/>
          </Context>
      </Host>
    </Engine>
</Service>
</Server>

  相关解决方案