11.9. 数据库连接验证


数据库维护、网络问题或其他中断事件可能会导致 JBoss EAP 丢失与数据库的连接。要从这些情形中恢复,您可以为数据源启用数据库连接验证。

要配置数据库连接验证,您可以指定验证时间方法来定义何时发生验证、确定如何执行验证的验证机制,以及定义如何处理异常的异常分类器。

  1. 选择其中一个 验证计时方法。

    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

    有关这些验证方法的比较列表,请参阅验证 计时方法比较

  2. 选择其中一个 验证机制。

    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
    Copy to Clipboard Toggle word wrap

    以下是您可能用来验证 MySQL 或 PostgreSQL 连接的 SQL 语句示例。

    select 1
    Copy to Clipboard Toggle word wrap
  3. 设置异常分类器类名称。

    当异常标记为致命时,连接会立即关闭,即使连接参与事务。使用 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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat