java.net.SocketException: Software caused connection abort: socket write error

我使用的框架是Struts2+Hibernate3+Spring,项目的后台数据库是Mysql,最近挪到正式服务器上了,处于一直打开服务的状态,就出现了java.net.SocketException: Software causedconnection abort: socket write error  这个异常。每次白天重启后能够正常访问,晚上没有人访问后,第二天早上再访问就报了这个错误。

在网上google了一下,都说是因为Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲如果超过8个小时,Mysql将自动断开该connection。这样就出现了上面这个问题。

网上的解决方法有几种:

第一种:在mysql安装目录下找到my.ini文件中添加超时限制:在该文件最后添加一行:wait_timeout=2880000。这样把之前的超时限制把8小时(28800)扩大为20天(20*24*60*60=1728000)。这样重启了mysql后,再在其中输入命令:show global variables like "wait_timeout"; ,查看超时是否已修改为:1728000。实际操作中,我修改的是C:\WINDOWS目录下的my.ini,这是我的Mysql数据库所使用的描述文件,在该文件的[mysqld]一节中,添加了wait_timeout=1728000。重启mysql后,执行上面的查询,返回的查询结果如下:

mysql> show global variables like "wait_timeout";
+---------------+-------------+
| Variable_name | Value   |
+---------------+-------------+
| wait_timeout  | 1728000 |
+---------------+-------------+
1 row in set (0.00 sec)

最后,重启tomcat,OK,服务器能正常访问。

第二种,通过c3p0的idleConnectionTestPeriod来控制:可以将它的值设定的比Mysql的默认wait_timeout小就行了。

<property name="idleConnectionTestPeriod" value="18000"/>

使用连接池可以解决这个问题,这里使用c3p0:
      修改hibernate.cfg.xml文件

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.min_size">8</property>
<property name="hibernate.c3p0.max_size">200</property>
<property name="hibernate.c3p0.timeout">600</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.idle_test_period">60</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">true</property>
时间: 2024-10-29 10:46:48

java.net.SocketException: Software caused connection abort: socket write error的相关文章

Caused by: java.net.SocketException: Software caused connection abort: socket write error

1.错误描述 [ERROR:]2015-10-16 22:28:39,964 [异常拦截] exception.ExceptionHandler ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.ja

eclipse的TestNG报错java.net.SocketException: Software caused connection abort: socket write error&quot;

最近整了一个自动化项目,需要用到testng,安装的最新版本6.11.0老是提示错误java.net.SocketException: Software caused connection abort: socket write error" 百度了半天终于解决了,具体方法如下: 1,卸载eclipse中原安装的6.11.0版本 2,安装指定的版本6.8.22: 输入指定的版本地址安装.http://beust.com/eclipse-old/eclipse_6.8.22.20150507032

testNG java.net.SocketException: Software caused connection abort: socket write error

执行用例报错,提示 java.net.SocketException: Software caused connection abort: socket write error java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutpu

ClientAbortException: java.net.SocketException: Software caused connection abort: socket write erro

1.错误描述 ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteCh

java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&amp;服务端代码

java.net.SocketException:Software caused connection abort: recv failed 异常分析 分类: 很多的技术 2012-01-04 12:54 8004人阅读 评论(6) 收藏 举报 socket服务器bufferstring网络java 第 1个异常是java.net.BindException:Address already in use: JVM_Bind.该异常发生在服务器端进行new ServerSocket(port)(p

FTP上传文件,报错java.net.SocketException: Software caused connection abort: recv failed

FTP上传功能,使用之前写的代码,一直上传都没有问题,今天突然报这个错误: java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketIn

错误:Caused by: java.net.SocketException: Software caused connection abort: recv failed

使用Spring JDBC时遇到的Software caused connection abort: recv failed问题 org.springframework.dao.DataAccessResourceFailureException: PreparedStatementCallback; SQL [select t.f_role_id from db_sys_user_role t where t.f_user_id=?]; Communications link failure

Software caused connection abort: recv failed错误

java.net.SocketException: Software caused connection abort: recv failed    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(Unknown Source)    at java.net.SocketInputStream.read(Unknown Source)    at org.

LoadRunner Error code 10053,Software caused connection abort

发现问题的应用场景  C/S结构程序,请求响应采用异步机制.即客户端发送一个请求后不是一直等待这个结果,客户端将请求存放在请求队列并获得一个JOBID,服务器运行后将运行结果存放在响应队列,客户端定时查看响应队列,根据JOBID定时从响应队列中获取结果.因此带来的测试问题是受服务器状态影响,客户端获取结果的次数不固定. 测试脚本示例  lrs_create_socket("socket0", "TCP", "LocalHost=0", "