数据库参数配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  java

<property name="driverClassName" value="${db.driverClassName}"/>  sql

<property name="url" value="${db.url}"/>  数据库

<property name="username" value="${db.username}"/>  apache

<property name="password" value="${db.password}"/>  缓存

<!--initialSize: 初始化链接-->  编码

<property name="initialSize" value="5"/>  url

<!--maxIdle: 最大空闲链接-->  线程

<property name="maxIdle" value="10"/>  日志

<!--minIdle: 最小空闲链接-->  orm

<property name="minIdle" value="5"/>  

<!--maxActive: 最大链接数量-->  

<property name="maxActive" value="15"/>  

<!--removeAbandoned: 是否自动回收超时链接-->  

<property name="removeAbandoned" value="true"/>  

<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->  

<property name="removeAbandonedTimeout" value="180"/>  

<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->  

<property name="maxWait" value="3000"/>  

<property name="validationQuery">  

<value>SELECT 1</value>  

</property>  

<property name="testOnBorrow">  

<value>true</value>  

</property>  

</bean>  

参数  描述

username  传递给JDBC驱动的用于创建链接的用户名

password  传递给JDBC驱动的用于创建链接的密码

url  传递给JDBC驱动的用于创建链接的URL

driverClassName  使用的JDBC驱动的完整有效的java 类名

connectionProperties  当创建新链接时被发送给JDBC驱动的链接参数,

格式必须是 [propertyName=property;]*

注意 :参数user/password将被明确传递,因此不须要包括在这里。

参数  默认值  描述

defaultAutoCommit  true  链接池建立的链接的默认的auto-commit状态

defaultReadOnly  driver default  链接池建立的链接的默认的read-only状态. 

若是没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,好比:Informix)

defaultTransactionIsolation  driver default  链接池建立的链接的默认的TransactionIsolation状态. 

下面列表当中的某一个: (参考javadoc)

 

    * NONE

    * READ_COMMITTED

    * READ_UNCOMMITTED

    * REPEATABLE_READ

    * SERIALIZABLE

defaultCatalog   链接池建立的链接的默认的catalog

参数  默认值  描述

initialSize  0  初始化链接:链接池启动时建立的初始化链接数量,1.2版本后支持

maxActive  8  最大活动链接:链接池在同一时间可以分配的最大活动链接的数量, 

若是设置为非正数则表示不限制

maxIdle  8  最大空闲链接:链接池中允许保持空闲状态的最大链接数量,超过的空闲链接将被释放,

若是设置为负数表示不限制

minIdle  0  最小空闲链接:链接池中允许保持空闲状态的最小链接数量,低于这个数量将建立新的链接,

若是设置为0则不建立

maxWait  无限  最大等待时间:当没有可用链接时,链接池等待链接被归还的最大时间(以毫秒计数),

超过期间则抛出异常,若是设置为-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  开启池的prepared statement 池功能

maxOpenPreparedStatements  不限制  statement池可以同时分配的打开的statements的最大数量, 

若是设置为0表示不限制

这里能够开启PreparedStatements池. 当开启时, 将为每一个链接建立一个statement池,

而且被下面方法建立的PreparedStatements将被缓存起来:

    * public PreparedStatement prepareStatement(String sql)

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

注意: 确认链接还有剩余资源能够留给其余statement

参数  默认值  描述

accessToUnderlyingConnectionAllowed  false  控制PoolGuard是否允许获取底层链接

若是允许则可使用下面的方式来获取底层链接:

    Connection conn = ds.getConnection();

    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();

    ...

    conn.close();

 

默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会形成伤害.

(关闭底层链接或者在守护链接已经关闭的状况下继续使用它).请谨慎使用,

而且仅当须要直接访问驱动的特定功能时使用.

注意: 不要关闭底层链接, 只能关闭前面的那个.

参数  默认值  描述

removeAbandoned  false  标记是否删除泄露的链接,若是他们超过了removeAbandonedTimout的限制.

若是设置为true, 链接被认为是被泄露而且能够被删除,若是空闲时间超过removeAbandonedTimeout. 

设置为true能够为写法糟糕的没有关闭链接的程序修复数据库链接.

removeAbandonedTimeout  300  泄露的链接能够被删除的超时值, 单位秒

logAbandoned  false  标记当Statement或链接被泄露时是否打印程序的stack traces日志。

被泄露的Statements和链接的日志添加在每一个链接打开或者生成新的Statement,

由于须要生成stack trace。

若是开启"removeAbandoned",那么链接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2)

 and (getNumActive() > getMaxActive() - 3)时被触发.

举例当maxActive=20, 活动链接为18,空闲链接为1时能够触发"removeAbandoned".

可是活动链接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.  

相关文章
相关标签/搜索