下面列举了 DBCP 中 org.apache.commons.dbcp2.BasicDataSource 数据源的配置参数信息:
username 要传递给JDBC驱动程序以建立连接的连接用户名。
password 要传递给JDBC驱动程序以建立连接的连接密码。
url 要传递给JDBC驱动程序以建立连接的连接URL。例如:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
driverClassName 要使用的JDBC驱动程序的完全限定Java类名。例如:com.mysql.jdbc.Driver
connectionProperties 建立新连接时将发送到JDBC驱动程序的连接属性。字符串的格式必须为 [property Name=property;]*。注意:“user” 和 “password” 属性将显式传递,因此不需要在此处包含它们。
defaultAutoCommit 使用驱动程序的默认值作为连接默认值,此池创建的连接的默认自动提交状态。如果未设置,则不会调用 setAutoCommit 方法。
defaultReadOnly 使用驱动程序的默认值作为连接默认值,此池创建的连接的默认只读状态。如果未设置,则不会调用 setReadOnly 方法。(某些驱动程序不支持只读模式,例如:Informix)
defaultTransactionIsolation 使用驱动程序的默认值作为连接默认值,此池创建的连接的默认事务隔离状态。以下之一:NONE、READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ、SERIALIZABLE。
defaultCatalog 此池创建的连接的默认目录。
cacheState 默认值为 true,如果为 true,则池连接将在首次读取或写入时以及所有后续写入时缓存当前的只读和自动提交设置。这样就无需对 getter 进行任何进一步调用的其他数据库查询。如果直接访问基础连接,并且只读和/或自动提交设置已更改,则缓存的值将不会反映当前状态。在这种情况下,应通过将此属性设置为 false 来禁用缓存。
defaultQueryTimeout 默认值为 null,如果为非 null,则此 Integer 属性的值确定将用于从池管理的连接创建的语句的查询超时。null 表示将使用驱动程序默认值。
enableAutoCommitOnReturn 默认值为 true,如果为 true,则在返回连接时自动提交设置为 false,则将检查返回到池的连接并使用 Connection.setAutoCommit(true) 进行配置。
rollbackOnReturn 默认值为 true,true 表示如果未启用自动提交且连接不是只读的,则连接将在返回到池时回滚。
initialSize 默认值为 0,启动池时创建的初始连接数。
maxTotal 默认值为 8,可以同时从此池分配的最大活动连接数,或负数表示无限制。
maxIdle 默认值为 8,在不释放额外连接的情况下,池中可以保持空闲的最大连接数,或者为负数表示没有限制。
minIdle 默认值为 0,在不创建额外连接的情况下,池中可以保持空闲的最小连接数,或者零表示不创建任何连接。
maxWaitMillis 默认值为 indefinitely,池在抛出异常之前等待(当没有可用连接时)返回连接的最大毫秒数,或者-1表示无限期等待。
validationQuery 在将连接返回给调用方之前,将用于验证来自此池的连接的 SQL 查询。如果指定,此查询必须是至少返回一行的 SQL SELECT 语句。如果未指定,则将通过调用 is-Valid() 方法来验证连接。
validationQueryTimeout 连接验证查询失败之前的超时(以秒为单位)。如果设置为正值,则此值通过用于执行验证查询的语句的 setQueryTimeout 方法传递给驱动程序。
testOnCreate 默认值为 false,指明是否在建立连接之后进行验证,如果验证失败,则尝试重新建立连接。
testOnBorrow 默认值为 true,指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个。注意: 设置为 true 后如果要效,validationQuery 参数必须设置为非空字符串。
testOnReturn 默认值为 false,指明是否在归还到池中前进行检验。
testWhileIdle 默认值为 false,指明连接是否被空闲连接回收器 (如果有) 进行检验。如果检测失败,则连接将被从池中去除。注意: 设置为 true 后如果要生效,validationQuery 参数必须设置为非空字符串
timeBetweenEvictionRunsMillis 默认值为 -1,在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位。如果设置为非正数,则不运行空闲连接回收器线程。
numTestsPerEvictionRun 默认值为 3,在每次空闲连接回收器线程(如果有)运行时检查的连接数量。
minEvictableIdleTimeMillis 默认值为 1000 * 60 * 30,连接在池中保持空闲而不被空闲连接回收器线程 (如果有) 回收的最小时间值,单位毫秒。
softMinEvictableIdleTimeMillis 默认值为 -1,连接可以在池中处于空闲状态的最短时间,然后才有资格被空闲连接收回,额外条件是至少 “minidle” 连接保留在池中。当minievableidletimemillis 设置为正值时,minievableidletimemillis 首先由空闲连接 evictor 检查-即当 evictor 访问空闲连接时,首先将空闲时间与 minievableidletimemillis(不考虑池中的空闲连接数)进行比较,然后与 softminevi 进行比较 CTableidletimemillis,包括 minidle 约束。
maxConnLifetimeMillis 默认值为 -1,连接的最大生存时间(毫秒)。超过此时间后,连接将无法通过下一次激活、钝化或验证测试。值为零或更小意味着连接具有无限的生存期。
logExpiredConnections 默认值为 true,用于记录消息的标志,该消息指示由于超过了 MaxConnLifeTimeMillis,池正在关闭连接。将此属性设置为 false 可禁止默认情况下打开的过期连接日志记录。
connectionInitSqls 默认值为 null,SQL语句的集合,在首次创建物理连接时将使用这些语句初始化物理连接。当配置的连接工厂创建连接时,这些语句只执行一次。
lifo 默认值为 true,如果为 true,则表示 BorrowObject 返回池中最近使用的(“Last-In”)连接(如果有空闲连接可用)。false 意味着池的行为就像一个 FIFO 队列——连接按照返回池的顺序从空闲实例池中获取。
poolPreparedStatements 默认值为 false,开启池的 prepared statement 池功能。
maxOpenPreparedStatements 默认值为 unlimited,statement 池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制
accessToUnderlyingConnectionAllowed 默认值为 false,控制 PoolGuard 是否容许获取底层连接,默认 false 不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害。(关闭底层连接或者在守护连接已经关闭的情况下继续使用它) 请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用。注意:不要关闭底层连接, 只能关闭前面的那个。
removeAbandonedOnMaintenance 或 removeAbandonedOnBorrow 默认值为 false,用于删除放弃的连接(如果它们超过删除放弃的超时)的标志。如果连接未使用超过删除放弃超时的时间,则被视为已放弃并符合删除条件。创建语句、PreparedStatement 或 CallableStatement,或使用其中一个来执行查询(使用其中一个执行方法)将重置父连接的 lastUsed 属性。将其中一个或两个设置为 true 可以从编写不佳的应用程序中恢复数据库连接,这些应用程序无法关闭连接。将 “removeAbandonedOnMaintenance ” 设置为 true 将删除维护周期(逐出结束时)中放弃的连接。除非通过将 timeBetweenEvictionRunsMillis 设置为正值来启用维护,否则此属性不起作用。
如果 removeAbandonedOnBorrow 为 true,则每次从池中借用连接时都会删除放弃的连接,但附加要求是 getNumActive() > getMaxTotal() - 3 和 getNumIdle() < 2
removeAbandonedTimeout 默认值为 300,在删除放弃的连接之前超时(以秒为单位)。
logAbandoned 默认值为 false,标记用于记录放弃语句或连接的应用程序代码的堆栈跟踪。记录放弃的语句和连接会增加每个打开的连接或新语句的开销,因为必须生成堆栈跟踪。
abandonedUsageTracking 默认值为 false,如果为 true,则每次在池连接上调用方法时,连接池都会记录堆栈跟踪,并保留最新的堆栈跟踪以帮助调试放弃的连接。将此设置为 true 会增加大量开销。
fastFailValidation 默认值为 false,当此属性为 true 时,对于引发 “致命” SQLExceptions 的连接,验证会快速失败。验证断开连接的连接的请求会立即失败,不会调用驱动程序的 isValid 方法或尝试执行验证查询。默认情况下,被视为表示致命错误的 SQL_STATE 代码如下:
57P01(管理员关闭)
57P02(崩溃关机)
57P03 (现在无法连接)
01002(SQL92 断开连接错误)
JZ0C0 (Sybase 断开连接错误)
JZ0C1 (Sybase 断开连接错误)
任何以“08”开头的SQL_STATE代码
若要重写这组默认的断开连接代码,请设置 disconnectionSqlCodes 属性。
disconnectionSqlCodes 默认值为 null,逗号分隔的 SQL_STATE 代码列表被视为表示致命断开连接错误。除非将 fastFailValidation 设置为 true,否则设置此属性不起作用。
jmxName 将数据源注册为 JMX MBean 在指定名称下,该名称必须符合 JMX 对象名称语法。
参考资料:https://commons.apache.org/proper/commons-dbcp/configuration.html