如果 C3P0 无法获得数据库连接,则 Tomcat 挂起

Posted

技术标签:

【中文标题】如果 C3P0 无法获得数据库连接,则 Tomcat 挂起【英文标题】:Tomcat hangs if C3P0 can't get a database connection 【发布时间】:2013-05-20 07:29:40 【问题描述】:

我有一个使用 Spring+Hibernate+C3P0 作为连接池的应用程序。如果我启动应用程序并且数据库已关闭,Tomcat 会挂起很长的日志时间而没有提供任何反馈。我可以设置一些属性来避免这种情况吗?例如30秒后无法连接,则抛出连接超时异常。

【问题讨论】:

【参考方案1】:

默认情况下,如果 c3p0 无法获取连接,它应该需要大约 30 秒才能发出失败信号。您可以通过修改 c3p0 在数据库上的尝试次数或尝试之间的间隔来控制时间长度。

请参阅 c3p0.acquireRetryAttempts 和 c3p0.acquireRetryDelay。

如果您将 c3p0.acquireRetryAttempts 设置为 1,c3p0 将不会重试并且连接尝试将立即重试失败。

另见Configuring Recovery From Database Outages。

【讨论】:

以上是关于如果 C3P0 无法获得数据库连接,则 Tomcat 挂起的主要内容,如果未能解决你的问题,请参考以下文章

c3p0数据库连接池 原创: Java之行 Java之行 5月8日 连接池概述 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程

C3P0 Java 数据库系列

c3p0参数解释

使用 c3p0 连接数据库

c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?

C3P0连接池使用教程