MySQL支持的基于Hibernate的Java Servlet应用程序中的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属性工作?) 编辑-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.
我试过的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>