在Thorntail中定义数据源验证

问题描述

在WildFly独立配置中,我们可以在数据源中定义一个验证查询。如果数据库连接丢失,则在定义后台验证毫秒后,可以恢复连接。如果没有此验证,则如果连接丢失,则只有在重新启动应用程序后,连接才能恢复。

    <datasource jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:postgresql://localhost:5432/myDB</connection-url>
        <driver>postgresql</driver>
        <security>
            <user-name>dbuser</user-name>
            <password>password</password>
        </security>
        <validation>
            <check-valid-connection-sql>select 1</check-valid-connection-sql>
            <validate-on-match>false</validate-on-match>
            <background-validation>true</background-validation>
            <background-validation-millis>30000</background-validation-millis>
        </validation>
    </datasource>

如何在thorntail project.yml文件中实现相同的目的?

thorntail:
  datasources:
    data-sources:
      MyDS:
        driver-name: postgresql
        connection-url: jdbc:postgresql://localhost:5432/myDB
        user-name: dbuser
        password: password

我尝试添加一个验证节点,但没有成功

      validation:
        check-valid-connection-sql: select 1
        validate-on-match: false
        background-validation: true
        background-validation-millis: 30000

解决方法

以下是该文档中的PostgreSQL数据源示例:https://docs.thorntail.io/2.7.0.Final/#_example_datasource_definitions也包括连接验证。

thorntail:
  datasources:
    data-sources:
      MyDS:
        driver-name: postgresql
        connection-url: jdbc:postgresql://localhost:5432/postgresdb
        user-name: admin
        password: admin
        valid-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
        validate-on-match: true
        background-validation: false
        exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

其他连接验证选项(包括您使用的选项)在同一文档中进行了描述。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...