![](/img/trans.png)
[英]How to Connect to Oracle Database in Grails 3 Project with Intellij IDEA?
[英]How to do an automatic pooled reconnection on an Oracle and a grails project when a database connection is interrupted?
我有一个项目使用了 grails 框架 3.X 和 Oracle DB,该项目部署在 tomcat 9.0.X 上。
项目存在DB连接问题,当项目与DB之间的连接、防火墙或任何网络配置发生变化时,DB连接中断,项目无法自动重新连接DB; 或 DB 的设置已更改或 DB 已重新启动。 因此,如今,当发生此问题时,我在 tomcat 服务器上手动重新部署项目。
为了解决这个问题,我尝试了很多改变,但问题还没有消失。 例如,我在 application.yml 上更改了 dataSource 配置的属性,并尝试了不同版本的 OJDBC 驱动程序。
当我在 application.yml 上将“pool”的值从 true 更改为 false 时,中断的连接可以自动重新连接。 但是,我认为“pool:false”配置会产生负面影响,因为数据库连接操作很昂贵。 例如,要达到最大连接限制,...
所以,我的问题是,当数据库连接中断时,如何对 Oracle 数据库和 grails 项目进行自动池重新连接?
我在 application.yml 上的当前配置(可能因为测试而改变了一些属性):
dataSources:
dataSource:
pooled: true
jmxExport: true
driverClassName: oracle.jdbc.OracleDriver
environments:
development:
dataSources:
dataSource:
logSql: false
dbCreate: update
url: jdbc:oracle:thin:@localdomain:1521/test
username: test
password: test
properties:
maxActive: 50
maxIdle: 25
minIdle: 1
initialSize: 5
numTestsPerEvictionRun: 3
maxWait: 1000
testOnBorrow: true
testWhileIdle: true
testOnReturn: true
minEvictableIdleTimeMillis: 1000
timeBetweenEvictionRunsMillis: 1000
validationQuery: SELECT 1 FROM DUAL
validationQueryTimeout: 5
validationInterval: 5
removeAbandoned: true
removeAbandonedTimeout: 5
production:
dataSources:
dataSource:
dbCreate: none
jndiName: "java:comp/env/testDs"
properties:
maxActive: 50
maxIdle: 25
minIdle: 1
initialSize: 5
numTestsPerEvictionRun: 3
maxWait: 1000
testOnBorrow: true
testWhileIdle: true
testOnReturn: true
minEvictableIdleTimeMillis: 1000
timeBetweenEvictionRunsMillis: 1000
validationQuery: SELECT 1 FROM DUAL
validationQueryTimeout: 5
validationInterval: 5
removeAbandoned: true
removeAbandonedTimeout: 5
您可以尝试设置validationQuery 属性为null,检查validationQuery 属性是否与其他属性冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.