• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL之—使用c3p0与DBCP连接池,造成的MySql 8小时问题的详细代码解决方案

mysql 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

本文详细描述MySQL之—使用c3p0与DBCP连接池,造成的MySql 8小时问题的详细代码解决方案,具有一定参考价值,下面是详述。

一、问题描述

最近在做一个Java Web项目,框架为Spring MVC+JPA,使用c3p0连接池,发布环境为Tomcat 7,项目运行一段时间(大概几个小时),之后访问时会出现第一次访问报错,再次访问正常的现象,且多次出现此问题。以下是报错日志:

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nest<div>本文来源gaodai^.ma#com搞#代!码网</div>ed exception is javax.persistence.PersistenceException: org.hibernate.TransactionException: JDBC begin transaction failed:           at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:428)          at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)          at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:417)          at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:255)          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)          at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)          at com.appcarcare.cube.service.UserService    EnhancerByCGLIB    a4429cba.getUserDao(<generated>)                at com.appcarcare.cube.servlet.DataCenterServlet$SqlTimer.connectSql(DataCenterServlet.java:76)          at com.appcarcare.cube.servlet.DataCenterServlet$SqlTimer.run(DataCenterServlet.java:70)          at java.util.TimerThread.mainLoop(Timer.java:555)          at java.util.TimerThread.run(Timer.java:505)      Caused by: javax.persistence.PersistenceException: org.hibernate.TransactionException: JDBC begin transaction failed:           at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)          at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)                at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1397)          at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:62)          at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:71)          at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:60)          at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:378)          ... 11 more      Caused by: org.hibernate.TransactionException: JDBC begin transaction failed:           at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:76)          at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)                at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1426)          at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:59)          ... 14 more      Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure            The last packet successfully received from the server was 1,836,166 milliseconds ago.      The last packet sent successfully to the server was 29,134 milliseconds ago.          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)          at java.lang.reflect.Constructor.newInstance(Constructor.java:526)          at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)          at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)          at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3567)          at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3456)                at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3997)          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)          at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)          at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5060)          at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:881)          at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:72)                ... 17 more      Caused by: java.net.SocketException: Software caused connection abort: recv failed          at java.net.SocketInputStream.socketRead0(Native Method)          at java.net.SocketInputStream.read(SocketInputStream.java:150)          at java.net.SocketInputStream.read(SocketInputStream.java:121)          at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)          at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)          at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)          at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3014)          at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3467)          ... 25 more

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL之—使用c3p0与DBCP连接池,造成的MySql 8小时问题的详细代码解决方案
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址