`
youanyyou
  • 浏览: 192970 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

org.hibernate.exception.JDBCConnectionException: could not execute query

阅读更多

最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常:

org.hibernate.exception.JDBCConnectionException: could not execute query 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:
74) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:
43) 
. 
Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception
/error: 


** BEGIN NESTED EXCEPTION ** 

com.mysql.jdbc.CommunicationsException 
MESSAGE: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
 
** END NESTED EXCEPTION ** 


查看了Mysql的文档,以及Connector/J的文档以及在线说明发现,出现这种异常的原因是:

Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。

解决的方法有3种:

  1. 增加wait_timeout的时间。
  2. 减少Connection pools中connection的lifetime。
  3. 测试Connection pools中connection的有效性。

当然最好的办法是同时综合使用上述3种方法,下面就DBCP和C3P0分别做一说明,假设wait_timeout为默认的8小时

DBCP增加以下配置信息:

//set to 'SELECT 1' 
validationQuery = "SELECT 1" 
//set to 'true' 
testWhileIdle = "true" 
//some positive integer 
timeBetweenEvictionRunsMillis = 3600000 
//set to something smaller than 'wait_timeout' 
minEvictableIdleTimeMillis = 18000000 
//if you don't mind a hit for every getConnection(), set to "true" 
testOnBorrow = "true" 


C3P0增加以下配置信息:

//获取connnection时测试是否有效 
testConnectionOnCheckin = true 
//自动测试的table名称

automaticTestTable
=C3P0TestTable

//set to something much less than wait_timeout, prevents connections from going stale 
idleConnectionTestPeriod = 18000 
//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out 
maxIdleTime = 25000 
//if you can take the performance 'hit', set to "true" 
testConnectionOnCheckout = true 


更多的配置信息大家可以查看C3P0文档,Connector/J文档,以及DBCP的文档。

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位! 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

分享到:
评论

相关推荐

    navicat下载、安装、配置连接与使用教程.pdf

    Navicat是一款强大的数据库管理和开发工具,支持多种数据库系统,如MySQL、PostgreSQL、SQLite等。以下是Navicat的下载、安装、配置连接与使用教程: 一、下载Navicat 1.访问Navicat官方网站:https://www.navicat.com.cn/download/navicat-premium。 2.在下载页面,选择适合你操作系统的版本进行下载。Navicat支持Windows、macOS和Linux等多种操作系统。 二、安装Navicat 1.双击下载好的Navicat安装包,根据安装向导的指示进行安装。 2.选择安装路径(建议不直接安装在C盘),点击“下一步”继续安装。 3.同意软件许可协议,点击“我同意”并选择“下一步”。 4.根据需要选择是否创建桌面图标,点击“下一步”继续。 5.点击“安装”开始安装过程,等待安装完成。 6.安装完成后,点击“完成”退出安装向导。 三、配置连接 1.打开Navicat软件,点击左上角的“连接”按钮或顶部菜单栏的“连接”选项。 2.在弹出的连接窗口中,选择你要连接的数据库类型(如MySQL、PostgreS

    用云电商 uniCloud 版,完整商用级项目,一套 js 解决前端、后端、数据库的全栈开发 serverless 模式永久开源

    用云电商 uniCloud 版永久开源,一套 js 解决前端、后端、数据库的全栈开发 serverless 模式(微信小程序、支付宝小程序、h5、QQ小程序、百度小程序、头条小程序、Android、iOS、Vue element-ui uniCloud 版管理后台)。用云 · 让开发更简单!

    高考英语3500单词第44讲(单词速记与拓展).pdf

    高考英语3500单词第44讲(单词速记与拓展).pdf

    【课件】《华为灰度管理法》.docx

    【课件】《华为灰度管理法》.docx

    高级网页设计(Java Web)实验库.zip

    网页设计 高级网页设计(Java Web)实验库.zip

    基于Spring Boot+Vue+Mysql的物流管理系统(源码+论文+演示视频).zip

    本系统实现一个物流管理系统。具体功能描述如下: 1. 系统其它信息管理:主要是针对系统的其他的信息进行管理,实现了系统的模块化的管理,系统的框架建设等信息的管理,具有系统的整合性功能的建立,支撑起整个系统的平台建设。 2. 采购管理:系统采购管理,是本平台的一个初始化工作的登记,通过系统用户的用料商品的采购,进行登记管理,能够让平台最初的信息登记做到信息化的统计,方便用户在后期对采购商品的查看管理。 3. 库存管理:库存管理主要是针对采购的物料信息进行入库和出库的管理,方便了用户对物料的登记管理。 4. 供应商管理:供应商信息的管理和登记,是本系统的第三方用户相关信息的登记功能,通过供应商信息的登记,能够方便企业对供应商的查找,快速进货。 5. 配送运输:配送运输是物流管理平台管理物流信息的一个重要的功能点,通过配送运输机制的建立,就能更好地对物流信息进行管理,进行物流信息一体化的建设工作。 6. 出库入库管理:出库入库的信息管理,是本系统建设的一个重要的功能,将采购的物料信息,进行出库入库的登记,入库后,可以新增物料信息的数量,并在出库后,进行数量的减少。 7. 单据查询:针对客户单据的信息进行管理,能够针对客户的物料结算单据,进行单据的查询和登记管理,方便企业对客户的单据,进行查询查看。

    工、机具、检测设备、安全防护用品等配备及要求表.docx

    工、机具、检测设备、安全防护用品等配备及要求表.docx

    塔式起重机安装施工流程图.docx

    塔式起重机安装施工流程图.docx

    【matlab仿真】MATLAB入门仿真材料 MATLAB入门仿真材料

    【matlab仿真】说明:MATLAB入门仿真材料。 MATLAB入门仿真材料。 (Matlab entry simulation materials.) 【matlab仿真】说明:MATLAB入门仿真材料。 MATLAB入门仿真材料

    3层单家独院式别墅占地面积130平方米三层别墅图纸水图.dwg

    3层单家独院式别墅占地面积130平方米三层别墅图纸结构.dwg

    ASP基于WEB实验室设备管理系统设计(源代码+论文)【ASP】.zip

    ASP基于WEB实验室设备管理系统设计(源代码+论文)【ASP】

    亮点策划模板:机械化工程公司亮点项目策划书系列之预埋件施工质量控制.doc

    亮点策划模板:机械化工程公司亮点项目策划书系列之预埋件施工质量控制.doc

    公司试验人员授权表.docx

    公司试验人员授权表.docx

    618节日相关的IT资源项目示例

    618节日相关的IT资源项目示例

    go1.22.4.windows-amd64.msi

    Go 语言 安装包

    【mysql开发】使用ssm框架+mysql开发,这是一个J2ee项目

    【mysql开发】说明:使用ssm框架+mysql开发,这是一个J2ee项目 (used ssm framework+mysql to develop) 文件列表: .idea\junitgenerator-prj-settings.xml (357, 2019-05-31) .idea\libraries\Spring.xml (4109, 2019-05-31) .idea\misc.xml (261, 2019-05-31) .idea\modules.xml (255, 2019-05-31) .idea\workspace.xml (15651, 2019-05-31) .settings\.jsdtscope (500, 2018-04-05) .settings\org.eclipse.core.resources.prefs (278, 2020-01-14) .settings\org.eclipse.core.runtime.prefs (52, 2018-04-06) .settings\org.eclipse.jdt.core.prefs (670, 2019-

    基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计&课程设计&高分项目).zip

    基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计&课程设计&高分项目).zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计&课程设计&高分项目).zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计&课程设计&高分项目).zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计&课程设计&高分项目).zip本资源中的源码都是经过本

    Python爬虫JS逆向进阶课程

    这门课程是Python爬虫JS逆向进阶课程,将教授学员如何使用Python爬虫技术和JS逆向技术获取网站数据。学习者将学习如何分析网站的JS代码,破解反爬虫机制,以及如何使用Selenium和PhantomJS等工具进行模拟登录和数据抓取。课程结合实例演练和项目实践,帮助学员掌握Python爬虫和JS逆向技术的核心概念,从而实现高效的数据获取和处理。无论您是Python爬虫初学者还是有经验者,都能从中获益。

    FZQ型塔机安装流程图.docx

    FZQ型塔机安装流程图.docx

    安卓上最佳笔记应用及其源代码+使用说明

    安卓上最佳笔记应用及其源代码 概述 安卓上最佳笔记应用使得在安卓智能手机或平板电脑上记录和管理笔记变得简单易行。笔记以卡片形式呈现,你可以轻松地滚动浏览并选择。通过集成的Google Drive,你可以在线访问这些笔记。应用还包括语音笔记、待办事项列表,以及设置提醒和与他人共享笔记的功能。 这尤其重要,因为智能手机已成为商务和普通消费者的热门设备,而记笔记是最基本但可能也是最重要的商务应用之一。 无论你是仅输入文本、使用手写笔书写还是用手指涂鸦,安卓上都有许多不同的笔记应用。有些应用专为记录简单笔记设计,而其他应用具有更多功能,可以将你的智能手机变成数字笔记本或工作簿。 现在,你可以使用智能手机记录会议纪要、写下商业想法和其他灵感,或使用协作软件与同事合作并添加你的笔记。 学生可以使用安卓笔记应用(也称为笔记应用)来:在基于云的存储系统中数字化存储所有笔记和重要信息。就像使用笔和纸一样,你可以在所选择的设备上键入、涂鸦和绘制笔记。 安卓笔记应用的优势和劣势 优势: 如果操作得当,它可以组织有序,展示关系,并减少编辑工作量。将主题转化为问题使得复习变得简单。 劣势:

Global site tag (gtag.js) - Google Analytics