我正在使用hibernate c3p0和mysql数据库,我的c3p0配置如下: 1
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.timeout">200</property>
<property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property>
它工作正常但是当服务器长时间闲置8-10个小时时出现问题,tomcat没有响应之后没有任何错误日志(mysql,hibernate,tomcat)它让我等待响应(我们将httprequest发送到servlet)但不抛出任何错误,我无法在tomcat日志中看到任何错误日志
所以我不确定它是否是c3p0或mysql的问题,任何人都可以提供帮助,非常感谢!!
答案 0 :(得分:0)
当数据库位于一个单独的盒子上时,其间的防火墙设置为超时空闲连接。
在某些情况下,防火墙会以JDBC端无法检测的方式切断连接,并且尝试使用它会导致无限期阻塞。
如果它是一个自定义连接池,它在从池中返回之前向连接发送测试查询。使用&#39; Statement.setQueryTimeout&#39;将此测试查询配置为超时。所以它没有无限期地阻止。