Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL支持的基于Hibernate的Java Servlet应用程序中的Hibernate通信链路故障_Java_Mysql_Hibernate_Jdbc - Fatal编程技术网

MySQL支持的基于Hibernate的Java Servlet应用程序中的Hibernate通信链路故障

MySQL支持的基于Hibernate的Java Servlet应用程序中的Hibernate通信链路故障,java,mysql,hibernate,jdbc,Java,Mysql,Hibernate,Jdbc,让我描述一下我的问题- 我有一个Java应用程序Hibernate作为MySQL上的DB接口层。我的应用程序中出现通信链路故障错误。这个错误的发生是一个非常特殊的情况。当我让mysql服务器无人值守超过大约6个小时(即,超过大约6个小时没有向mysql发出任何查询)时,就会出现此错误。我在下面粘贴一个顶级“异常”级别的描述,并添加一个用于详细stacktrace描述的pastebin链接 javax.persistence.PersistenceException: org.hibernate.

让我描述一下我的问题-

我有一个Java应用程序Hibernate作为MySQL上的DB接口层。我的应用程序中出现通信链路故障错误。这个错误的发生是一个非常特殊的情况。当我让mysql服务器无人值守超过大约6个小时(即,超过大约6个小时没有向mysql发出任何查询)时,就会出现此错误。我在下面粘贴一个顶级“异常”级别的描述,并添加一个用于详细stacktrace描述的pastebin链接

javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: 无法打开连接 -原因:org.hibernate.exception.JDBCConnectionException: 无法打开连接 -原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信链路故障 -从服务器成功接收的最后一个数据包为 1274868181212毫秒前。 成功发送到的最后一个数据包 服务器已在0毫秒前关闭。 -原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信链路故障 -从服务器成功接收的最后一个数据包为 1274868181212毫秒前。 成功发送到的最后一个数据包 服务器已在0毫秒前关闭。 -原因:java.net.ConnectException:连接 拒绝:连接

用于进一步调查的pastebin链接-

我从这些异常语句中了解到,MySQL在一段空闲/无活动时间后拒绝接收任何连接。我通过谷歌搜索了解了一些这方面的信息,并了解到克服这一问题的可能方法之一是为c3p0属性设置值,因为c3p0与Hibernate捆绑在一起。具体地说,我从这里了解到,设置两个属性idleConnectionTestPeriod和preferredTestQuery可以解决这个问题。但这些价值观似乎没有产生影响

这是解决这个问题的正确方法吗?如果不是,那么正确的解决方法是什么

以下是stackoverflow.com上的相关通信链路故障问题,但我在他们的回答中没有找到令人满意的答案。

注1-当我继续使用我的应用程序时,我不会出现此错误。 注意2-我将JPA与Hibernate一起使用,因此我的Hibernate.dial等Hibernate属性位于META-INF文件夹中的persistence.xml中(这是否会阻止c3p0属性工作?)

编辑-
我试过的c3p0参数在我之前发布的评论中。看起来MySQL服务器超时了您的连接。 默认情况下,超时为28800,即8小时。有关更多详细信息,请参阅此链接


希望它对您有用。

即使我遇到了这个错误,我也是在c3p0配置中启用autoReconnect=true后才解决的

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ex_app?autoReconnect=true</property>
jdbc:mysql://localhost:3306/ex_app?autoReconnect=true

我用c3p0解决了通信链路故障。 我在下面的博客上看到过,上面解释说 org.hibernate版本必须等于c3p0版本, 这就是我今天的pom配置

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.6.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
     <artifactId>hibernate-entitymanager</artifactId>
     <version>4.3.1.Final</version>
 </dependency>
<dependency>
 <groupId>org.hibernate</groupId>
  <artifactId>hibernate-c3p0</artifactId>
 <version>4.3.6.Final</version>
</dependency>

  <dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
   <version>0.9.1.2</version>
</dependency>

org.hibernate

请更新您的问题,以包括完整的Hibernate c3p0配置。它们是-选择1;让我试试,我会让你知道的,谢谢
       <property name="hibernate.c3p0.min_size">10</property>