![](/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.