【问题标题】:How to open all connections as soon as application deployed?应用程序部署后如何打开所有连接?
【发布时间】:2016-04-22 10:22:49
【问题描述】:
<beans:bean id="scimDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <beans:property name="driverClassName" value="${oracle.driver}" />
        <beans:property name="url" value="${oracle.url}" />
        <beans:property name="username" value="${oracle.user}" />
        <beans:property name="password" value="${oracle.password}" />
        <beans:property name="initialSize" value="2" />
        <beans:property name="maxActive" value="15" />
        <beans:property name="maxIdle" value="3" />
    </beans:bean>

这是我用来创建池的配置。 我希望应用程序启动后立即打开 2 连接。 但现在它在我发出第一个请求后打开第一个连接。然后它在池中可用。

我怎样才能在开始时打开所有连接?

【问题讨论】:

  • 你怎么知道它只是打开了一个而不是两个?
  • 基于响应时间。第一次连接需要更多时间。第一次调用后,连接将立即返回。如果我与第一次请求并行进行另一个调用,它再次需要很长时间。如果 2连接已经初始化,那么并行应该很快。
  • 我建议您应该检查数据库中的活动连接而不是消耗的时间。如果你使用MySql,你可以参考这个。 stackoverflow.com/questions/7432241/…
  • 现在我意识到它在启动时没有打开指定的连接数。但是在我第一次向数据库请求期间,它打开了指定的连接数并在池中缓存。

标签: java database apache database-connection pool


【解决方案1】:

https://commons.apache.org/proper/commons-dbcp/configuration.html

paramenter initialSize - 池启动时创建的初始连接数。

【讨论】:

  • 但一开始并没有打开。一旦我打第一个电话,它就开始了。我还应该在所需的代码或参数中添加什么吗?
  • 那么,testOnCreate 参数呢?我明白了,我认为 Santosh 有适当的 initialSize 参数,但仍然无法正常工作? testOnCreate 不会真正打开连接,不管他为什么这样做?还是运行validationQuery?
  • 也许不是池的问题,而是弹簧没有加载 bean 的问题。 Stack Overflow question
  • Santosh Hegde ,这取决于您的应用程序逻辑。您可以使用某种方法在您的应用程序中启动 da 连接(在启动时)。大多数应用程序在开始启动一些数据时都使用 db。
  • Zond,根据文档,它应该打开 2 个连接。但它没有发生。有什么方法可以初始化最小连接数
猜你喜欢
  • 2019-03-03
  • 2018-01-02
  • 2017-07-22
  • 2017-10-24
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多