我有一个连接了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