我使用spring jdbc模板进行应用程序。。在tomcat中部署。。我想在tomcat jdbc中使用连接池。我的连接配置是

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3310/mydb" />
    <property name="username" value="***" />
    <property name="password" value="***" />
    <property name="maxWait" value="10000" />
    <property name="removeAbandonedTimeout" value="60" />
    <property name="removeAbandoned" value="true" />
    <property name="logAbandoned" value="false" />
    <property name="initialSize" value="10" />
    <property name="maxActive" value="100" />
    <property name="minIdle" value="10" />
</bean>

我不知道怎么做,但是当我运行一些测试,并检查mysql中的max线程时,它显示活动线程比配置中配置的max active还多。那么,为什么配置中的maxActive不工作呢?如何让它发挥作用?例如,maxActive是100,但是当我签入mysql时,活动线程比maxActive多。

最佳答案

McActive(int)可激活连接的最大数目
同时从这个池分配。默认值为100
Max空闲(INT)应保存的最大连接数
一直在游泳池里。默认值为maxActive:100个空闲连接
定期检查(如果启用)和空闲的连接
在比我更长的时间里,伊德利梅利斯将被释放。(另见
测试时间)
所以我建议您也使用maxIdle,例如:

<property name="maxIdle" value="100">

但也许有一个问题,如果你能显示你的连接管理代码,这将是有帮助的。
这里有一个关于Spring的声明式和编程式事务管理的连接问题的有趣链接:Connection pool problem with Spring and programmatic transaction management

07-26 06:55