用了很久的c3p0,但是每当MySQL数据库重启或者出现网络原因后,总是出现下面现象:
出现以下异常:
org.springframework.dao.DataAccessResourceFailureException: could not execute query
...
...
...
** BEGIN NESTED EXCEPTION **
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Connection reset by peer: socket write error
STACKTRACE:
java.net.SocketException: Connection reset by peer: socket write error
...
...
直接原因:
直接原因不明,但是可以通过其他方法再现。
再现方法:
正常启动mysql和tomcat下的应用。然后重启mysql,访问应用,上述异常再现。
根本原因:
目前使用的dbcp连接池在丢失数据库连接后无法重新连接。
解决:
使用c3p0连接池。
实际上配置文件中已经配置了c3p0,但是并没有启动,即使配置了c3p0的日志文件,里面却没有内容。
找了很久,tmd终于找到原因了,加上下面的内容才能启动。
<property name="connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
顺便记下c3p0的日志输出方法:
log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=DEBUG,A5
注:以上内容是从一个大神的博客(http://tjmljw.iteye.com/blog/1404686)中摘抄过来的,方便以后出现同类问题时忘记怎么解决
分享到:
相关推荐
在Java编程环境中,数据库连接管理是一项关键任务,而c3p0和MySQL驱动程序是实现这一目标的重要组件。本文将详细介绍这两个组件以及如何在项目中使用它们。 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定...
C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...
**c3p0数据库连接池**是用于管理数据库连接的一种高效、可靠的开源工具,它能够有效地提高应用程序处理数据库的能力,避免频繁地创建和关闭数据库连接,从而减少系统资源的消耗,提升系统的整体性能。c3p0是Mysql AB...
C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接池扮演着非常重要的角色,它能够有效地管理数据库连接,提高系统性能,减少数据库资源...
3. **连接池配置**:C3P0允许用户通过配置文件或代码设置各种参数,如最小连接数、最大连接数、初始化连接数、测试连接的SQL语句等。 4. **并发控制**:在多线程环境下,C3P0能够有效地管理和分配连接,确保并发...
4. 连接池扩展性:C3P0支持多种数据库驱动,如MySQL、Oracle、PostgreSQL等,只需提供对应的JDBC驱动即可使用。 5. 配置灵活性:C3P0提供大量的可配置参数,用户可以根据实际需求调整,例如初始化连接数、最大连接...
在Java开发中,数据库连接管理是一项重要的任务,为了...总之,这个压缩包提供了一个完整的解决方案,帮助开发者快速集成c3p0连接池并连接到MySQL 8.x数据库,无需自己去分别下载和配置各个组件,大大简化了开发流程。
【c3p0 MySQL 例子】是一个关于在Eclipse环境中使用c3p0连接池与MySQL数据库进行数据操作的实践教程。c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。这个例子旨在帮助...
在MySQL 8.0中使用C3P0,需要添加对应的jar包到项目的类路径中,这通常包括`mysql-connector-java.jar`(MySQL驱动)和`c3p0-0.9.5.2.jar`(C3P0连接池)。在配置文件中,我们需要指定数据库的相关信息,如数据库URL...
在你的Java代码或配置文件(如`c3p0.properties`或`application.properties`)中,设置C3P0的属性,如最大连接数(maxPoolSize)、最小连接数(minPoolSize)、初始化连接数(initialPoolSize)等。 3. 初始化C3P0...
C3P0是一个开源的Java连接池实现,它提供了一种灵活且功能强大的数据库连接管理方式。在本文中,我们将深入探讨C3P0连接池的基本概念、工作原理以及如何在Java项目中配置和使用。 **C3P0简介** C3P0是由David Syer...
3. **使用C3P0数据源**:在需要的地方,通过数据源获取数据库连接,并在使用完毕后归还连接。 ```java import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; public class ...
执行`mvn clean package`命令后,你会得到一个包含所有依赖的fat JAR,这样在运行时就无需再单独提供MySQL和C3P0的驱动了。 总结,C3P0连接池与MySQL 8.0.11的整合主要涉及以下步骤:引入相关依赖、配置数据源参数...
在本资源包“mysql-jdbc8.0.21和c3p0-0.9.5.2.zip”中,包含的是MySQL的JDBC驱动程序和C3P0连接池的jar包,这两个组件对于Java开发者来说非常重要,特别是处理大量数据库交互的Web应用程序。 首先,`mysql-...
通过数据源获取到的连接,实际上是c3p0从连接池中分配的,使用完毕后,应将其归还给连接池,以便重复使用。 `c3p0-oracle-thin-extras-0.9.5.2.jar`虽然在文件列表中,但其命名表明它是针对Oracle数据库的特殊扩展...
在这个场景中,我们将深入探讨如何使用C3P0连接池来与MySQL数据库进行交互,并结合log4j进行日志记录。 首先,要使用C3P0,你需要在项目中引入相应的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```...
java语言连接Mysql数据库。通过Eclipse集成开发工具,编写java类文件,实现JDBC连接。 通过c3p0连接数据库的三种方法,包括xml文件、properties文件。
2. **C3P0配置**:C3P0的配置可以通过XML或者Java代码进行,主要包括初始化连接数、最大连接数、最小连接数、测试连接是否有效的SQL语句等。 ### 二、C3P0连接MySQL 连接MySQL数据库时,C3P0需要以下关键配置: 1...
- **空闲连接回收**:当连接长时间未使用,c3p0会自动回收这些空闲连接,防止资源浪费。 - **自动扩缩容**:根据应用的负载情况,c3p0可以动态调整连接池的大小。 3. **c3p0配置** - **基本配置**:包括数据库...
- **调整 c3p0 的 maxIdleTime 和 idleConnectionTestPeriod 参数**:确保这些参数设置得当,以便c3p0能够在MySQL关闭空闲连接之前检测到并重新创建连接。 #### 结论 c3p0作为一款优秀的数据库连接池组件,其自动...