我有一个 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/