C3P0和Java Swing应用程序

时间:2013-05-18 00:41:13

标签: java spring swing c3p0

我有一个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我们只需要每个用户的数据库连接”和(2) c3p0请通过设置连接数来控制总数据库连接数,直到10 ...

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

1 个答案:

答案 0 :(得分:0)

我将总结以上评论:

  • c3p0(以及任何连接池)用于控制客户端的连接数
  • 如果要限制服务器连接,请使用数据库服务器配置(例如,对于MySQL,max_connection
  • 您仍然可以在客户端上保留连接池,以优化客户端性能 - 即每次需要时都不会打开新连接。
  • 只有在出现问题时才应限制服务器端连接。您可能会让客户等待连接(或者更糟糕的是 - 获得“连接太多”错误)并且无法使用您的软件。