簡體   English   中英

當數據庫連接中斷時,如何對 Oracle 和 grails 項目進行自動池重新連接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM