`

使用hibernate连接mysql自动中断的问题

阅读更多

数据库为mysql,客户端使用hibernate进行连接,结果长时间没有数据访问的话,重新访问数据库就会报错:

java 代码
  1. org.hibernate.exception.JDBCConnectionException: could not execute query    
  2. at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)    
  3. at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)    
  4. .......    
  5. Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:    
  6.   
  7.   
  8. ** BEGIN NESTED EXCEPTION **    
  9.   
  10. com.mysql.jdbc.CommunicationsException    
  11. MESSAGE: Communications link failure due to underlying exception:    
  12.   
  13. ** BEGIN NESTED EXCEPTION **    
  14.   
  15. java.net.SocketException    
  16. MESSAGE: Broken pipe    
  17.   
  18. STACKTRACE:    
  19.   
  20. java.net.SocketException: Broken pipe    
  21. at java.net.SocketOutputStream.socketWrite0(Native Method)    
  22. ......    
  23. ** END NESTED EXCEPTION **    

查阅相关文档,造成报错的原因在于:Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。

解决的方法有3种:

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

使用c3p0解决上面问题的配置如下:

   <!---->

java 代码
  1. <!---->  
  2.     "c3p0.min_size">10   
  3.     "c3p0.max_size">100   
  4.     "c3p0.timeout">10   
  5.     "c3p0.acquireRetryAttempts">30   
  6.   
  7.     "c3p0.acquireIncrement">5   
  8.   
  9.     <!---->
  10.     "c3p0.idleConnectionTestPeriod">300   
  11.   
  12.     "c3p0.initialPoolSize">20   
  13.     "c3p0.maxPoolSize">100   
  14.     <!---->
  15.     "c3p0.maxIdleTime">300   
  16.     "c3p0.maxStatements">50   
  17.     "c3p0.minPoolSize">10  
分享到:
评论

相关推荐

    hibernate自动重新连接数据库proxool的使用

    总结起来,`Hibernate`结合`Proxool`可以实现对数据库的自动重新连接,有效处理连接中断的情况。通过合理的配置,我们可以优化连接池的性能,提高系统整体的健壮性和效率。在实际开发中,务必根据项目的规模和特性来...

    如何安装使用hibernate tools

    建议选择直接下载压缩包,尤其是网络连接不稳定时,这能避免安装过程中可能出现的中断问题。 3. **下载并解压**。找到对应版本,下载完成后,将解压后的`plugin`和`feature`目录下的文件复制到Eclipse的相应...

    c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接

    尤其是在配合ORM框架如Hibernate时,c3p0能够提供高效的数据库连接管理和自动重连机制,有效提升系统的稳定性和性能。本文将深入探讨c3p0的自动重连机制,并结合实际应用场景中的配置示例进行详细介绍。 #### c3p0 ...

    JDBC实现Mysql自动重连机制的方法详解

    然而,由于各种原因,如网络问题、服务器维护或配置设定,数据库连接可能会意外中断。对于使用JDBC(Java Database Connectivity)与MySQL交互的应用来说,实现自动重连机制是确保高可用性和稳定性的关键。本文将...

    mysql-connector-java-8.0.12.jar

    - **自动重连机制**:当数据库连接因网络问题中断后,可以自动尝试重新建立连接,确保应用的稳定运行。 - **兼容性增强**:不仅与Java 8兼容,还支持Java 9及以上版本,适应不同开发环境的需求。 2. **使用...

    Amoeba搞定mysql主从读写分离

    开发者可以继续使用JDBC或其他ORM框架(如Hibernate、MyBatis)与Amoeba进行交互。Amoeba会自动处理底层的数据库连接和请求转发,使得业务逻辑不受影响。 然而,使用Amoeba并非没有挑战。由于Amoeba增加了额外的...

    CoonnectionStabilizer:Mysql等的长效连接稳定器-开源

    当应用程序尝试使用已关闭的连接时,会触发异常,导致应用程序错误或服务中断。 `ConnectionStabilizer`的核心功能是通过监测和刷新数据库连接来防止这种超时关闭。它通常是一个包装器类,比如将标准的`java.sql....

    C3P0 jar包,适合ORACLE11G

    4. 断线重连机制:在数据库连接因网络问题或其他原因中断时,C3P0能尝试自动重连,确保应用的连续性。 5. 扩展性:C3P0不仅支持Oracle数据库,还兼容其他多种JDBC驱动,如MySQL、PostgreSQL等,具有良好的跨平台和...

    使用Java-AWS-MySQL-springboot的数据库和Web服务器:AWS服务器不再处于活动状态并且代码将无法运行

    7. **持续部署和自动化**: 使用工具如Jenkins、GitLab CI/CD或AWS CodePipeline进行持续集成和持续部署,可以确保代码更新时不会中断服务。同时,这些工具可以自动化测试,确保每次部署的代码质量。 8. **监控和...

    SpringJDBC笔记

    ### Spring JDBC 数据源详解 #### 一、Spring JDBC 概述 Spring JDBC 是 Spring 框架中的一个重要组成...通过对上述配置项的详细了解和合理设置,可以有效地管理数据库连接资源,避免因连接管理不当导致的性能问题。

    quartz任务调试

    1. **连接数据库**:使用JDBC或ORM框架(如Hibernate)建立与MySQL的连接。 2. **查询数据**:编写SQL语句或使用ORM的API获取需要同步的数据。 3. **转换和处理**:根据业务需求,可能需要对查询到的数据进行处理...

    满汉楼小项目(java程序操作数据库)

    7. **ORM(对象关系映射)框架**:虽然题目中没有明确提到,但满汉楼小项目可能使用了如Hibernate或MyBatis这样的ORM框架,它们简化了Java和数据库之间的交互,将SQL操作与Java对象绑定,提高了开发效率。...

    java部分面试题.pdf

    - JDBC连接池问题:网络中断后,连接池通常能检测并重新建立连接。 - length()与lengthb():前者计算字符串长度,后者计算字符串字节长度。 - Transient变量:用于标记字段不参与序列化。 - Oracle排序:使用ORDER ...

    欣天图书管理系统源代码

    可能使用了如MySQL或Oracle等关系型数据库管理系统,通过JDBC(Java Database Connectivity)接口连接数据库,执行SQL语句进行数据操作。 4. **Servlet与JSP**:在Java Web应用中,Servlet用于接收和处理HTTP请求,...

    164_Java教材征订系统_班级管理系统.rar

    Java的异常处理机制允许我们优雅地捕获和处理可能出现的问题,避免程序因未预期的错误而中断。 6. **设计模式**:在开发过程中,设计模式如单例模式(用于数据库连接)、工厂模式(用于对象创建)和策略模式(用于...

    SQL注入漏洞演示源代码

    6. **使用ORM(对象关系映射)**:如Hibernate或Entity Framework,可以自动处理SQL注入问题,因为它们通常会处理SQL构造。 7. **代码审计**:定期检查代码以发现潜在的SQL注入漏洞。 在提供的"SQL注入漏洞实例...

    dwr 框架下的一个chat

    用户信息可能被保存在关系型数据库如MySQL中,密码通常使用哈希算法(如SHA-256)加上盐值进行加密存储,以提高安全性。 5. **前端界面**:聊天界面一般由HTML、CSS和JavaScript构建,利用DWR提供的API进行数据交互...

    库存管理系统Os

    3. **数据库连接与管理**:库存数据通常存储在关系型数据库中,如MySQL或Oracle。Java的JDBC(Java Database Connectivity)接口用于与数据库进行通信,实现数据的增删查改操作。此外,ORM(对象关系映射)框架,如...

    程序员需要知道

    **问题**: 请简要介绍一下使用 Spring + Hibernate 的方框图及其各个组成部分。 **解答**: Spring + Hibernate 组合是一种常用的 Java 开发模式,它结合了 Spring 框架的依赖注入和事务管理功能,以及 Hibernate ...

    cqut高级java大作业学生管理系统

    4. **数据库连接与JDBC**:为了存储和检索学生数据,系统可能使用了关系型数据库如MySQL或Oracle。Java通过Java Database Connectivity (JDBC) API与数据库进行交互,执行SQL查询、插入、更新和删除操作。 5. **...

Global site tag (gtag.js) - Google Analytics