2017-09-13 23 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。 它不起作用 –

相关问题