gpt4 book ai didi

java - 我可以动态更改 org.apache.tomcat.jdbc.pool.DataSource 的 maxActive 属性吗?

转载 作者:行者123 更新时间:2023-11-30 08:20:26 24 4
gpt4 key购买 nike

我有一个连接了 Groovy 控制台的 web 应用程序。

我通过 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 应用程序上下文。

我的问题是,这实际上会改变连接池的行为吗?我发现的所有链接似乎都集中在初始配置上。我正在尝试在池建立后修改配置。

最佳答案

我在文档中也找不到任何内容,但是通过查看实现我很确定它不支持初始化后的修改,原因如下:

  • 除了简单地更新字段值之外,没有编写代码来处理对该属性的更新。
  • 在 org.apache.tomcat.jdbc.pool.ConnectionPool.init() 中有很多代码验证该属性。如果稍后设置该属性,则不会运行任何代码。
  • init() 方法还分配至少一个具有固定容量的队列,该容量永远不会在代码的其他地方更新。

关于java - 我可以动态更改 org.apache.tomcat.jdbc.pool.DataSource 的 maxActive 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26062625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com