jdbc4 通信异常 [英] jdbc4 CommunicationsException

查看:37
本文介绍了jdbc4 通信异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一台运行 java 应用程序的机器与在同一实例上运行的 mysql 实例通信.应用程序使用来自 mysql 的 jdbc4 驱动程序.我不断收到 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException在随机时间.

I have a machine running a java app talking to a mysql instance running on the same instance. the app uses jdbc4 drivers from mysql. I keep getting com.mysql.jdbc.exceptions.jdbc4.CommunicationsException at random times.

这是整个信息.

无法为事务打开 JDBC 连接;嵌套异常是

Could not open JDBC Connection for transaction; nested exception is

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was25899 milliseconds ago.The last packet sent successfully to the server was 25899 milliseconds ago, which  is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

对于 mysql,全局wait_timeout"和interactive_timeout"的值设置为 3600 秒,connect_timeout"设置为 60 秒.等待超时值远高于 26 秒(25899 毫秒).在异常跟踪中提到.

For mysql, the value of global 'wait_timeout' and 'interactive_timeout' is set to 3600 seconds and 'connect_timeout' is set to 60 secs. the wait timeout value is much higher than the 26 secs(25899 msecs). mentioned in the exception trace.

我使用 dbcp 进行连接池,这里是数据源的 spring bean 配置.

I use dbcp for connection pooling and here is spring bean config for the datasource.

   <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" >
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/db"/>
                <property name="username" value="xxx"/>
                <property name="password" value="xxx" />
                    <property name="poolPreparedStatements" value="false" />
            <property name="maxActive" value="3" />
            <property name="maxIdle" value="3" />
    </bean>

知道为什么会发生这种情况吗?使用 c3p0 会解决问题吗?

Any idea why this could be happening? Will using c3p0 solve the problem ?

推荐答案

尝试正确设置 Apache Commons DBCP.

Try setting up the Apache Commons DBCP correctly.

你需要设置:

  • 验证查询到 SELECT 1+1
  • testOnBorrow 为真

这应该可以解决问题.

这篇关于jdbc4 通信异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆