【发布时间】: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