获取org.hibernate.exception.JDBCConnectionException:在应用程序运行一段时间后无法在Spring应用程序中执行查询

时间:2015-11-17 11:24:46

标签: java mysql spring hibernate tomcat

我正在使用Spring + Hibernate + MySQL运行正常的应用程序,但有时我收到这些错误

错误:

could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

我在tomcat - 7版本上运行我的应用程序

所以如果我不使用该应用程序超过一段时间我得到这个错误我不知道时间,如果我重新启动我的应用程序然后我能够正常工作我没有得到任何错误的

我的database.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">



<bean id="dataSource" 
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <property name="url" value="${jdbc.url}"/>
   <property name="username" value="${jdbc.username}"/>
   <property name="password" value="${jdbc.password}"/>
</bean>

</beans>

上述配置是否有任何问题我需要更改以解决此问题

2 个答案:

答案 0 :(得分:2)

根据this回答,您必须将mysql连接器/驱动程序放在Tomcat/lib而不是战争中。每次部署战争时都会创建连接器/驱动程序,有时垃圾收集器无法将其删除,这将以内存泄漏结束。

答案 1 :(得分:0)

您可以在此主题上看到类似的问题和可能的解决方案。

tomcat7 - jdbc datasource - This is very likely to create a memory leak