文章目录

这次用Xfire作为客户端来连一个WebService

但诡异的是,总是会随机的抛出

org.codehaus.xfire.fault.XFireFault: Couldn’t send message.

Caused by: java.net.SocketTimeoutException: Read timed out的异常

而且经常是很久没访问,再次访问的时候才会出现

Google了一下,都不能解决问题.诡异

后来netstat了一下,发现连接Webservice的TCP的状态一直是ESTABLISHED,即使请求已经完毕了

应该是HttpClient 还一直保留着这个连接.而这个时候如果网络问题导致这个连接出现问题而HttpClient却还不知道继续用这个连接来发送请求就会出现time out了

知道了问题,修改HttpClient的配置

<entry key=”disable.expect-continue” value=”true”/>
  <entry key=”http.timeout” value=”30000”/>
  <entry key=”disable-keep-alive” value=”true”/>
取消了  expect-continue和keep-alive 这样一旦请求完,连接便会被Closed.

从而避免了time out的发生

文章目录