<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.max_size">100</property>
<property name="c3p0.idleConnectionTestPeriod">300</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">100</property> <!-- seconds -->
这是hibernate.cfg.xml中的配置。我正在使用hibernate 3.2.5和c3p0 0.9。我不知道在这个配置中我错过了什么。几次请求后,它显示连接达到最大池大小并等待免费资源。如果我在本地计算机中使用没有连接池配置,它将不会显示任何错误消息。 请帮我找出缺失的部分。
答案 0 :(得分:2)
我使用以下配置,它在长期测试中没有问题: (我的数据源是由spring配置的,但无论如何你都可以看到c3p0的属性)
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="jdbcUrl" value="${database.url}" />
<property name="user" value="${database.login}" />
<property name="password" value="${database.password}" />
<property name="minPoolSize" value="3" />
<property name="maxPoolSize" value="100" />
<property name="maxStatements" value="1100" />
<property name="maxStatementsPerConnection" value="120" />
<property name="checkoutTimeout" value="5000" />
<property name="idleConnectionTestPeriod" value="60" />
</bean>
但是我猜你的问题不是配置。我假设并非所有连接都返回到池中,因此池在一段时间后会变干。