【问题标题】:Grails 3 Automatic Reconnect with MS Sql ServerGrails 3 与 MS Sql Server 自动重新连接
【发布时间】:2018-08-08 05:10:45
【问题描述】:

我正在使用 Spring Boot 和 Hibernate 以及 MS SQL Server 作为后端数据库在 Grails 3.2.2 上开发 Web 应用程序。我希望我的应用程序在 SQL 服务器在重启或任何其他问题后恢复时自动重新连接数据库。

这就是我的 application.yml 文件数据库相关属性的样子:

development:
        dataSource:
            dbCreate: update
            url: jdbc:jtds:sqlserver://machine_host_name:1433/db_name?autoReconnect=true
            properties:
                jmxEnabled: true
                initialSize: 5
                maxActive: 50
                minIdle: 5
                maxIdle: 25
                maxWait: 10000
                maxAge: 600000
                timeBetweenEvictionRunsMillis: 5000
                minEvictableIdleTimeMillis: 60000
                validationQuery: SELECT 1
                validationQueryTimeout: 3
                validationInterval: 15000
                testOnBorrow: true
                testWhileIdle: true
                testOnReturn: false
                defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED

这是 JTDS 库,我在 build.gradle 文件中使用:

compile group: 'net.sourceforge.jtds', name: 'jtds', version: '1.3.1'

因此,使用这些配置,我的应用程序在 SQL Server 服务重新启动后也无法自动重新连接到 MS SQL Server。

【问题讨论】:

  • 据我所知,GORM 并不直接支持动态数据库连接。在讨论它的文档的多租户部分中有一些词 (gorm.grails.org/6.0.x/hibernate/manual/…)
  • 我同时使用 MySQL 和 Oracle,并且可以确认 GORM 能够在数据库失败后重新连接就好了。你的设置看起来不错。我注意到这是用于开发,不确定您是否将其用于生产(即战争部署)。此外,您必须确保您的 validationQuery 对您的数据库正常工作。选择 1 是否适用于 ms sql?在 Oracle 中,您使用 select 1 from dual。

标签: sql-server hibernate spring-boot grails grails-3.0


【解决方案1】:

我在使用 Javamelody 插件时发现了一个问题,在 build.gradle 中编译 'org.grails.plugins:grails-melody-plugin:1.72.0'。

一旦我将其注释掉,它就解决了与我们数据库的重新连接问题。对你来说可能不是同一个问题,但对其他人来说可能是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多