我有一個連接了Groovy控制檯的webapp。我可以動態更改org.apache.tomcat.jdbc.pool.DataSource的maxActive屬性嗎?
我有以下豆通過XML配置:
<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應用程序上下文。
我的問題是,這個實際上是改變連接池的行爲。我發現的所有鏈接似乎都集中在初始配置上。我試圖在池建立後修改配置。
這個人應該可能會收到一些實際的運行時驗證。它看起來像代碼可能期望maxActive屬性不會在運行時更改。 – EricHenry 2014-09-26 16:14:11
儘管如此,池可以通過JMX暴露... – EricHenry 2014-09-26 16:15:48