hibernate 断开自动重连

hibernate 断开自动重连

错误信息

ERROR org.hibernate.transaction.JDBCTransaction - JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was36313 milliseconds ago.The last packet sent successfully to the server was 36313 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.

 

 

原因:如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat;

          或配置hibernate自动重连'autoReconnect=true' 

解决方法:下面是我的配置(mysql数据库,spring+hiberante)

applicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost/db?autoReconnect=true&amp;autoReconnectForPools=true"/>
  <property name="username" value="root"/>
  <property name="password" value="123"/>
  <property name="validationQuery" value="SELECT 1"/>     
   <property name="testOnBorrow" value="true"/>
          
 </bean>

 

 其实我只加

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

 

就能实现自动重连,测试为mysql 。oracle 下修改validationQuery的SQL语句

展开阅读全文

没有更多推荐了,返回首页