2

我有一个 Java Swing 应用程序,其中包含一个用于管理连接池的 c3p0 库。在其配置中,我设置了属性 c3p0.maxPoolSize=10 但是一旦用户登录到系统,它仍然会创建更多连接。

c3p0.acquireIncrement=1
c3p0.minPoolSize=1
c3p0.maxPoolSize=10
c3p0.maxIdleTime=300

如何控制这种行为?

这是我的 Spring XML 数据库配置

<context:property-placeholder
    location="main/resources/properties/database.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="${jdbc.driverClassName}" />
    <property name="jdbcUrl" value="${jdbc.url}" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- these are C3P0 properties -->
    <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
    <property name="minPoolSize" value="${c3p0.minPoolSize}" />
    <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
    <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
</bean>

bean 生成好了,但是我无法控制这个事件:当用户登录到系统时,c3p0 会自动再打开三个连接。我们想要的是(1)通过 XML 配置文件“告诉”c3p0 我们只需要每个用户的 db 连接和(2)c3p0 请通过将连接数设置为 10 来控制总数据库连接数......

如果我不清楚,请告诉我。

4

1 回答 1

0

我总结一下上面的评论:

  • c3p0(和任何连接池)用于控制客户端的连接数
  • 如果您想限制服务器连接,请使用数据库服务器配置(例如,对于 MySQL,它是max_connection
  • 您仍然可以将连接池保留在客户端上,以优化客户端性能 - 即不要在每次需要时都打开新连接。
  • 仅当出现问题时才应限制服务器端连接。您冒着让客户端等待连接(或更糟 - 出现“连接过多”错误)并且无法使用您的软件的风险。
于 2013-05-18T07:32:11.187 回答