Xfire之诡异time out
文章目录
这次用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的发生