2017-09-13 55 views
0

我有一個spring啓動應用程序,我使用tomcat連接池進行數據庫連接。 當我訪問應用程序時,默認情況下每次登錄創建10個連接。 我得到的,這是由於在application.properties文件中修改Tomcat數據源特定設置時不會更改

spring.datasource.tomcat.initial-size = 10(default value) 

我修改此屬性在application.properties文件,使其僅5 但是,這並不做任何修改。 也不是這樣的:

spring.datasource.max-active=5 

我錯過了什麼嗎?

回答

1

非常愚蠢的錯誤,但請檢查正在使用的特性在哪裏。在我的情況下,我有一個提供數據庫細節的XML文件。而application.properties中的那些被忽略。

我改變了application.properties,所以顯然沒有影響。

最後,我刪除了XML文件,只使用application.properties文件,它開始工作。 我使用過:

spring.datasource.tomcat.maxActive= 50 
spring.datasource.tomcat.initialSize= 1 
spring.datasource.tomcat.minIdle = 1 
spring.datasource.tomcat.maxIdle = 5 
spring.datasource.tomcat.testWhileIdle = true 

謝謝@ user7294900。由於您的評論,我想到了交叉驗證。 :)

1

你有2個參數根據tomcat影響inital大小:

minIdle(INT),其 應始終保持在池中已建立的連接的最小數目。如果驗證查詢失敗,則連接池可以收縮到此數字以下。默認值爲 ,從initialSize派生:10(同時參見testWhileIdle)

initialSize(int)創建的初始連接數 池啓動時​​的初始數量。默認值是10

所以你需要設置的2個參數中PoolProperties

PoolProperties p = new PoolProperties(); 
p.setMinIdle(5); 
p.setInitialSize(5); 
+0

好,我設置屬性如下: 'spring.datasource.tomcat.initialSize = 5 spring.datasource.tomcat.minIdle = 5 spring.datasource.tomcat.testWhileIdle = TRUE' 但它不工作.. :( 數據源具有以下屬性: 'defaultAutoCommit = null; defaultReadOnly = null; defaultTransactionIsolation = -1; defaultCatalog = null; maxActive = 100; maxIdle = 100; minIdle = 10; initialSize = 10; maxWait = 30000; testOnBorrow = false; testOnReturn = false; timeBetweenEvictionRunsMillis = 5000; numTestsPerEvictionRun = 0; minEvictableIdleTimeMillis = 60000; testWhileIdle = false; testOnConnect = false;' –

+0

你的spring啓動版本是什麼?try spring.datasource.tomcat.min-idle = 5 – user7294900

+0

春波版本 - 1.4。我試過spring.datasource.tomcat.min-idle = 5。 它不起作用 –

相關問題