13.8. 数据库连接验证
数据库维护、网络问题或其他中断事件可能会导致 JBoss EAP 丢失与数据库的连接。要从这些情况中恢复,您可以为数据源启用数据库连接验证。
要配置数据库连接验证,您可以指定验证时间方法(在验证发生时)、验证机制(执行验证方式)和异常排序器(如何处理异常)。
选择其中一个 验证计时方法。
- validate-on-match
当
validate-on-match选项设置为true时,每次使用下一步中指定的验证机制签出连接时,都会从连接池中验证数据库连接。如果连接无效,则会将警告写入日志,并且检索池中的下一个连接。此过程将继续,直到找到有效的连接。如果您不希望通过池中的每个连接进行循环,您可以使用
use-fast-fail选项。如果池中没有找到有效的连接,则会创建新的连接。如果连接创建失败,则返回异常到请求的应用程序。此设置可以更快地恢复,但会在数据库上创建最高负载。但是,如果最小性能命中不是问题,这是最安全的选择。
- background-validation
当
background-validation选项设置为true时,在使用前,会在后台线程中定期验证连接。验证的频率由background-validation-millis属性指定。background-validation-millis的默认值为0,表示它已被禁用。在确定
background-validation-millis属性的值时,请考虑以下几点:-
这个值不应设置为与
idle-timeout-minutes设置相同的值。 - 值越低,池会被验证频率,并从池中移除更快速的无效连接。
- 较低的值需要更多数据库资源。数值越高,会导致连接验证检查减少,并且使用较少的数据库资源,但在较长的时间段内不会检测到死连接。
-
这个值不应设置为与
注意这些选项是互斥的。如果
validate-on-match设为true,则必须将background-validation设置为false。如果background-validation设为 true,则必须将validate-on-match设置为false。选择 一种 验证机制。
- valid-connection-checker-class-name
使用
valid-connection-checker-class-name是首选的验证机制。这将指定一个连接检查器类,用于验证正在使用的特定数据库的连接。JBoss EAP 提供以下连接检查器:-
org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
-
- check-valid-connection-sql
使用
check-valid-connection-sql,您可以提供用于验证连接的 SQL 语句。以下是一个示例 SQL 语句,可用于验证 Oracle 连接。
select 1 from dual以下是一个示例 SQL 语句,可用于验证 MySQL 或 PostgreSQL 连接。
select 1
设置异常分类类名称。
当异常被标记为 fatal 时,连接会立即关闭,即使连接参与一个事务中。使用 exception sorter 类选项在致命连接异常后正确检测和清理。为您的数据源类型选择适当的 JBoss EAP 异常排序。
-
org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter
-