apache http client:“无路由到主机”的连接超时

时间:2013-02-03 16:33:54

标签: java apache-httpclient-4.x

我遇到apache http client (4.2.1)连接超时问题,如果主机存在但没有及时响应,连接会因超时而关闭(一切都按预期),但如果没有这样的主机,客户端会保留等待时间超过预期(大约12秒而不是配置中指定的5秒)。最终会导致NoRouteToHostException,可能是因为特定的网络问题(当我试图在另一个网络中重现这个问题时,我在等待5秒后得到套接字读取超时异常,如预期的那样)。 我正在使用以下超时设置:

  • http.socket.timeout = 5秒
  • http.connection.timeout = 5秒

任何想法都表示赞赏。

更新

如果有人遇到同样的问题,可能是由客户端执行的连接重试引起的。我解决问题时会更新这篇文章

UPDATE2

最终我能够解决这个问题。问题是由DefaultHttpRequestHandler执行的连接重试引起的,如果没有显式指定请求重试处理程序,则由AbstractHttpClient(它是DefaultHttpClient的父级)使用。因此,如果您想要删除它,只需指定具有较少重试次数的请求重试处理程序

1 个答案:

答案 0 :(得分:1)

最终我能够解决这个问题。问题是由DefaultHttpRequestHandler执行的连接重试引起的,如果没有显式指定请求重试处理程序,则由AbstractHttpClient(它是DefaultHttpClient的父级)使用。因此,如果您想要删除它,只需指定具有较少重试次数的请求重试处理程序