12.9. 数据库连接验证
数据库维护、网络问题或其他中断事件可能会导致 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 语句。- 以下是可以用来验证 Oracle 连接的 SQL 语句示例。 - select 1 from dual - select 1 from dual- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下是可以用来验证 MySQL 或 PostgreSQL 连接的示例 SQL 语句: - select 1 - select 1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 设置异常分类器类名称。 - 当异常标记为致命时,即使连接参与交易,也会立即关闭连接。使用异常排序器类选项,在连接异常后正确地检测和清理。为您的数据源类型选择相应的 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
 
-