Java MySQL数据库连接在几分钟后断开

Java MySQL数据库连接在几分钟后断开,java,mysql,spring,hibernate,jsf,Java,Mysql,Spring,Hibernate,Jsf,我正在使用Spring+Hibernate+JSF,但如果我在页面上停留几分钟的话,我在尝试一些数据库查询时会遇到异常 The last packet successfully received from the server was 2,615,049 milliseconds ago. The last packet sent successfully to the server was 27 milliseconds ago. Caused by: org.hibernate.Tra

我正在使用Spring+Hibernate+JSF,但如果我在页面上停留几分钟的话,我在尝试一些数据库查询时会遇到异常

 The last packet successfully received from the server was 2,615,049 milliseconds ago.  The last packet sent successfully to the server was 27 milliseconds ago.

Caused by: org.hibernate.TransactionException: JDBC begin transaction failed: 
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:76)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
    at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1309)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:474)
    ... 46 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
此问题是由于我的项目中的任何配置或其数据库供应商问题造成的吗 在web.xml中,我做了这个条目

<session-config>
   <session-timeout>
          30
   </session-timeout>
 </session-config>

30
连接池

<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://IP:3306/ccc" />
                <property name="user" value=" hariom" />
                <property name="password" value="password" />
        <property name="maxPoolSize" value="2" />
        <property name="maxStatements" value="0" />
        <property name="minPoolSize" value="1" />
</bean>

您应该添加此属性

<property name="validationQuery" value="SELECT 1" />


这将验证连接,如果mysql关闭了连接,你的应用程序将不会尝试发送数据包。

这个问题已经回答了很多次,搜索它
会话超时
设置是关于http会话的,与数据库无关。要回答您的问题,我们应该更多地了解您的设置,特别是您使用的连接池。是ApacheDBCP、c3p0、BoneCP还是其他什么?如何配置数据源?添加的连接池设置对我来说就像数据库服务器在X分钟不活动后关闭连接,并且池没有设置为处理过时的连接。因此,我必须做什么来解决问题?但它应该引发异常,因为如果它关闭,它将不会重新连接。你的应用程序理解此问题连接状态与针对mysql的验证查询一致,如果需要,它将重新连接。无需更改池大小等其他内容。在我的applicationcontext.xml文件中添加上述属性后,我的应用程序无法工作且无法创建会话有何异常?