【发布时间】:2017-06-06 00:49:15
【问题描述】:
我在 Tomcat 上有一个 Spring Hibernate 应用程序。 连接池为 C3P0
我很快就遇到了来自 C3P0 的线程池最大化警告。然后对 webapp 的所有请求都会挂起。
我仍然假设在代码中的某个地方我错过了@Transaction 注释。我想调试我的代码。
问题:我可以通过代码访问连接池,以便在连接释放和未释放连接时进行调试吗?
更新:当前 c3p0 配置:
<!-- Hibernate -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="org.postgresql.Driver" />
<property name="jdbcUrl" value="jdbc:postgresql://localhost/ikoda01?useUnicode=true&characterEncoding=utf8" />
<property name="user" value="xxxuser" />
<property name="password" value="xxxxx" />
<property name="acquireIncrement" value="2" />
<property name="minPoolSize" value="3" />
<property name="maxPoolSize" value="50" />
<property name="maxIdleTime" value="600" />
</bean>
【问题讨论】:
-
如果你的连接池在增长但从未缩小,这意味着你的事务是打开的但从未关闭过。确保您没有自己实例化事务 bean。