6.6. 数据源配置

6.6.1. 数据源参数

表 6.3. XA 和非 XA 数据源共用的数据源参数

参数 描述
jndi-name 数据源的唯一 JNDI 名称。
pool-name 数据源的管理池的名称。
enabled 是否启用数据源
use-java-context
是否绑定数据源到全局 JNDI。
spy
启用 JDBC 层的 spy 功能。这会将所有 JDBC 通讯记录到数据源。请注意 logging 子系统里的日志类别 jboss.jdbc.spy 的级别也必须设置为 DEBUG
use-ccm 启用缓存连接管理者。
new-connection-sql 当连接被添加到连接池时会执行的 SQL 语句。
transaction-isolation
下列值之一:
  • TRANSACTION_READ_UNCOMMITTED
  • TRANSACTION_READ_COMMITTED
  • TRANSACTION_REPEATABLE_READ
  • TRANSACTION_SERIALIZABLE
  • TRANSACTION_NONE
url-delimiter 用于高可用性(HA)群集数据库的 connection-url 的分隔符。
url-selector-strategy-class-name 实现 org.jboss.jca.adapters.jdbc.URLSelectorStrategy 接口的类。
security
包含设置安全性的子元素。请参考 表 6.8 “安全性参数”
validation
包含设置有效性的子元素。 请参考 表 6.9 “用于检验的参数”
timeout
包含设置超时的子元素。请参考 表 6.10 “超时参数”
statement
包含设置语句的子元素。请参考 表 6.11 “语句参数”

表 6.4. Non-XA 数据源参数

参数 描述
jta 为非 XA 数据源启动 JTA 集成。不适用于 XA 数据源。
connection-url JDBC 驱动连接的 URL。
driver-class JDBC 驱动类的全限定名。
connection-property
传递给 Driver.connect(url,props) 方法的任意连接属性。每个 connection-property 都指定一个字符串/值对。属性名称来自元素名称,而值来自元素的内容。
pool
包含设置池的子元素。请参考 表 6.6 “non-XA 和 XA 数据源公用的池参数”

表 6.5. XA 数据源参数

参数 描述
xa-datasource-property
分配给 XADataSource 类实现的属性。通过 name=value 指定。如果存在 setName 格式的 setter 方法,这个属性将通过调用 setName(value) 格式的 setter 方法来设置。
xa-datasource-class
javax.sql.XADataSource 实现的全限定名。
driver
对包含 JDBC 驱动的 classloader 模块的唯一引用。有效的格式是 driverName#majorVersion.minorVersion
xa-pool
recovery
包含设置恢复的子元素。请参考 表 6.12 “恢复参数”

表 6.6. non-XA 和 XA 数据源公用的池参数

参数 描述
min-pool-size 池里可保留的连接的最小数量。
max-pool-size 池里可保留的连接的最大数量。
prefill 是否预先填充连接池。空的元素表示 true 值。默认为 false
use-strict-min pool-size 是否是严格规定的。默认为 false
flush-strategy
在发生错误时是否冲刷池。有效值为:
  • FailingConnectionOnly
  • IdleConnections
  • EntirePool
默认值为 FailingConnectionOnly
allow-multiple-users 指定是否有多个用户将通过 getConnection(user, password) 访问数据源,且内部池类型是否应该计入在内。

表 6.7. XA 池参数

参数 描述
is-same-rm-override javax.transaction.xa.XAResource.isSameRM(XAResource) 类是否返回 truefalse
interleaving 是否启用 XA 连接工厂的 interleaving。
no-tx-separate-pools
是否为每个上下文创建单独的子池。对于 Oracel 数据源来说这是必需的,它不允许 XA 连接既在 JTA 内部又在外部使用。
使用这个选项将导致您的池大小两倍于 max-pool-size,因为这实际会创建两个池。
pad-xid 是否拆分 Xid。
wrap-xa-resource
是否将 XAResource 包裹在 org.jboss.tm.XAResourceWrapper 实例里。

表 6.8. 安全性参数

参数 描述
user-name 创建新连接使用的用户名。
password 创建新连接使用的密码。
security-domain 非 XA 数据源参数
reauth-plugin 定义一个重验证插件以用于重新验证物理连接。

表 6.9. 用于检验的参数

参数 描述
valid-connection-checker
提供 SQLException.isValidConnection(Connection e) 方法来检验连接的 org.jboss.jca.adaptors.jdbc.ValidConnectionChecker 接口的实现。异常表示连接已被销毁。它覆盖了 check-valid-connection-sql 参数(如果存在)。
check-valid-connection-sql 检查池连接有效性的 SQL 语句。当从池里获取受管连接进行使用时它会被调用。
validate-on-match
指定当连接工厂试图对给定的集合匹配受管连接时是否执行连接级别的检验。
我们通常不会同时指定 validate-on-matchbackground-validation 为 true。但客户在使用连接前必须进行检验时则需要 Validate-on-match。这个参数默认为 false。
background-validation
指定连接在背景线程上进行检验。背景检验不和 validate-on-match 一起使用是一种性能优化。如果 validate-on-match 为 true 时,使用 background-validation 可能导致冗余的检查。背景检验可能会让用户用到有问题的连接(连接在返回给客户和检验扫描之间可能会出现问题),所以客户应用程序必须考虑到这种可能性。
background-validation-millis 背景检验运行的时间(毫秒)。
use-fast-fail
如果为 true,在第一次尝试时如果连接无效则失败。默认为 false
stale-connection-checker
提供 Boolean isStaleConnection(SQLException e) 方法的 org.jboss.jca.adapters.jdbc.StaleConnectionChecker 实例。如果这个方法返回 true,异常将包裹在 org.jboss.jca.adapters.jdbc.StaleConnectionExceptionSQLException 的子类)里。
exception-sorter
提供 Boolean isExceptionFatal(SQLException e) 方法的 org.jboss.jca.adapters.jdbc.ExceptionSorter 实例。这个方法检验异常是否作为 connectionErrorOccurred 消息传播到所有的 javax.resource.spi.ConnectionEventListener 实例上。

表 6.10. 超时参数

参数 描述
use-try-lock 使用 tryLock() 而不是 lock()。在指定秒数内试图获取锁,而不是在锁不可用时立即失败。默认值为 60 秒。如果超时为 5 分钟,则应设置 <use-try-lock>300</use-try-lock>
blocking-timeout-millis 等待连接时阻塞的最长时间(毫秒)。超过这个时间后,异常将被抛出。这只是在等待连接许可时阻塞,如果创建新连接花费很长时间并不会抛出异常。默认值为 30000,也就是 30 秒。
idle-timeout-minutes
在空闲连接关闭前的最长等待时间(分钟)。实际的最长时间取决于 idleRemover 扫描时间,它是任何池的最小 idle-timeout-minutes 的一半。
set-tx-query-timeout
是否根据事务超时前剩下的时间设置查询超时。如果没有事务存在则使用任何配置好的查询超时时间。默认为 false
query-timeout 查询的超时时间(秒)。默认是无超时。
allocation-retry 在抛出异常前,重新尝试分配连接的次数。默认为 0,异常将在第一次失败时抛出。
allocation-retry-wait-millis
在重新分配连接前应等待的时间(毫秒)。默认值是 5000,也就是 5 秒。
xa-resource-timeout
如果为非零值,这个值将传递给 XAResource.setTransactionTimeout 方法。

表 6.11. 语句参数

参数 描述
track-statements
当连接返回池且语句返回到 prepared 语句缓存时是否检测未关闭的语句。如果为 false,则不会对语句进行追踪。

有效值

  • true: : 对语句和结果集进行跟踪,如果没有关闭则提示警告。
  • false: 对语句和结果集都不进行跟踪。
  • nowarn: 语句将被跟踪但不会发出警告。这是默认设置。
prepared-statement-cache-size 每个连接的 prepared 语句的个数,存在于 Least Recently Used (LRU) 缓存里。
share-prepared-statements
是否两次请求相同的底层 prepared 语句而不关闭它。默认是 false

表 6.12. 恢复参数

参数 描述
recover-credential 安全域用于恢复的用户名/密码对。
recover-plugin
用于恢复的 org.jboss.jca.core.spi.recoveryRecoveryPlugin 类的实现。