我运行了一个连接了Groovy控制台的webapp。
我通过XML配置了以下bean:
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
<property name="driverClassName" value="${db.driverClass}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="validationQuery" value="${db.validationQuery}" />
<property name="testOnBorrow" value="true" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="1800000" />
<property name="numTestsPerEvictionRun" value="8" />
<property name="removeAbandoned" value="true"/>
<property name="logAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<!--connection pooling props -->
<property name="maxActive" value="${db.maxActive}"/>
<property name="maxIdle" value="${db.maxIdle}"/>
<property name="maxAge" value="${db.maxAge}"/>
<property name="maxWait" value="${db.maxWait}"/>
<property name="initialSize" value="${db.initialSize}"/>
<property name="minIdle" value="${db.minIdle}"/>
</bean>
通过Groovy控制台,我可以轻松地调用:
appCtx.getBean("dataSource").setMaxActive(someNumber);
其中appCtx
是我的Spring应用程序上下文。
我的问题是,实际是否会更改连接池行为。我发现的所有链接似乎都集中在初始配置上。我在池建立后尝试修改配置。
答案 0 :(得分:2)
我在文档中找不到任何内容,但从查看实现情况来看,我非常确定它不支持在初始化后支持修改,原因如下:
答案 1 :(得分:1)
在检查org.apache.tomcat.jdbc.pool.ConnectionPool
时,看起来它正在从池中获取连接时检查maxActive
属性。
所以我不能说我从经验中知道,但看起来应该可以在运行时设置这个值。