java - C3P0 和 Java Swing 应用程序

标签 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生成好了,但是我无法控制这个事件:当用户登录系统时c3p 0 auto 打开另外三个连接。我们想要的是(1)”通过 XML 配置文件告诉“c3p0 我们只需要每个用户的数据库连接” 和 (2) c3p0 请通过将连接数设置为 10 来控制数据库连接总数...

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

最佳答案

我将总结上面的评论:

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

关于java - C3P0 和 Java Swing 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619628/

相关文章:

java - JTable、TableModel 等的复杂使用

java - 如何将此代码从最小堆更改为最大堆

java - 使用java通过3DES-128位CBC模式(填充零)解密数据

java - 编写一个以 Hashmap 作为集合的数据提供程序类并将其传递给 API 测试中的多个参数

java - 突发 "failed to lazily initialize a collection of role...:no session or session was closed"- 异常

linux 上的 java keylistener

java - TitanDB 定义和使用索引

java - 在 Spring Boot 中使用 MockMvc 进行测试

java - Spring在测试中不调用@Bean方法

java - 如何在将 JComponent 实例化添加到 JContainer 时添加 ActionListener?