2014-11-04 154 views
0

我正在与hibernate.cfg的Spring MVC应用程序,如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障?

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.useUnicode">true</property> 
    <property name="hibernate.connection.characterEncoding">UTF-8</property> 
    <property name="hibernate.connection.charSet">UTF-8</property> 
    <property name="connection.url">jdbc:mysql://10.2.10.123:3306/xxx</property> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="connection.username">xxx</property> 
    <property name="generate_statistics">false</property> 
    <property name="connection.password">xxx</property> 
    <property name="c3p0.testConnectionOnCheckout">true</property> 
    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
    <property name="c3p0.acquire_increment">1</property> 
    <property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
    <property name="c3p0.max_size">50</property> 
    <property name="c3p0.max_statements">0</property> 
    <property name="c3p0.min_size">10</property> 
    <property name="c3p0.timeout">7200</property> 
    <property name="current_session_context_class">thread</property> 
    <property name="c3p0.numHelperThreads">5</property> 
    <property name="show_sql">false</property> 

当我运行在本地环境中的应用,它运行没有任何问题。但是在服务器上它提供了异常,因为:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

从服务器成功接收最后一个包是206756毫秒以前。成功发送到服务器的最后一个数据包是3毫秒前。

而且我得到以下日志:

Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3119) 
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3573) 
    ... 90 more 
DEBUG: 11:42:41.858 com.mchange.v2.resourcepool.BasicResourcePool.trace(BasicResourcePool.java:1644) - trace [email protected] [managed: 7, unused: 6, excluded: 0] (e.g. [email protected]) 
DEBUG: 11:42:41.861 com.mchange.v2.resourcepool.BasicResourcePool.decrementPendingAcquires(BasicResourcePool.java:422) - decremented pending_acquires: 0 
DEBUG: 11:42:41.858 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:967) - Successfully destroyed resource: [email protected] 
DEBUG: 11:42:41.861 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.finerLoggingTestPooledConnection(C3P0PooledConnectionPool.java:323) - Test of PooledConnection [[email protected]] on CHECKOUT has FAILED. 
java.sql.SQLException: Connection is invalid 

谁能帮助?

+0

尝试在MySQL连接属性中设置set auto connect'true'。 – 2014-11-04 07:48:38

回答

0

我通过将MySQL服务器上的wait_timeout和interactive_timeout的值增加到3600秒(1小时)解决了这个问题,而此前两者都被设置为60秒。

相关问题