HTTPClient请求等待返回,在等到第5分钟的时候会报错

空白-键 2015-12-25 06:38:16
用HTTPClient创建连接请求一个接口,那个接口处理比较长,大概在10分钟左右,经过几次测试发现都是在5分钟的时候,报如下错误:

org.apache.http.NoHttpResponseException: The target server failed to respond


我设置了了HTTPclient的超时时间:

httpClient = (CloseableHttpClient) HttpClients.createDefault();
HttpPost httpPost = new HttpPost(URL);
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(Integer.MAX_VALUE)
.setConnectTimeout(Integer.MAX_VALUE).build();
httpPost.setConfig(requestConfig);


服务器防火墙等没设置限制,
接口的tomcat也没设置超时时间,配置如下:

<Connector port="4567" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />


像这种是什么原因,是不是tomcat或者HTTPClient默认5分钟没返回就报错。

PS:先不管异步请求之类的,目前想知道为什么会出现这问题。

谢谢!
...全文
723 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2015-12-30
  • 打赏
  • 举报
回复
引用 3 楼 linminqin 的回复:
[quote=引用 1 楼 tianfang 的回复:]

				System.setProperty("sun.net.client.defaultConnectTimeout", "1000" );
				System.setProperty("sun.net.client.defaultReadTimeout", "600000");
java的缺省超时设置,主要是第二个,读数据超时时间,系统缺省为300s,5分钟。你可以用上面第二个,设置到600s或者更高
我试了下,没效果,我在set之前打印System.getProperty("sun.net.client.defaultReadTimeout")得到的值是null,不是300000。 httpclient版本是4.3。[/quote] 我1楼写的是 java自带的 。 httpclient 4.3应该是 HttpComponents Client下的吧,的可以参考这个文章 http://my.oschina.net/u/577453/blog/173724
injuer 2015-12-29
  • 打赏
  • 举报
回复
the target server limit 5 min a http timeout,so,you get "The target server failed to respond" message.
dracularking 2015-12-29
  • 打赏
  • 举报
回复
错误堆栈发出来看看?
tony4geek 2015-12-29
  • 打赏
  • 举报
回复
空白-键 2015-12-29
  • 打赏
  • 举报
回复
有没有人帮忙看下
空白-键 2015-12-28
  • 打赏
  • 举报
回复
引用 1 楼 tianfang 的回复:

				System.setProperty("sun.net.client.defaultConnectTimeout", "1000" );
				System.setProperty("sun.net.client.defaultReadTimeout", "600000");
java的缺省超时设置,主要是第二个,读数据超时时间,系统缺省为300s,5分钟。你可以用上面第二个,设置到600s或者更高
我试了下,没效果,我在set之前打印System.getProperty("sun.net.client.defaultReadTimeout")得到的值是null,不是300000。 httpclient版本是4.3。
tianfang 2015-12-26
  • 打赏
  • 举报
回复

				System.setProperty("sun.net.client.defaultConnectTimeout", "1000" );
				System.setProperty("sun.net.client.defaultReadTimeout", "600000");
java的缺省超时设置,主要是第二个,读数据超时时间,系统缺省为300s,5分钟。你可以用上面第二个,设置到600s或者更高
  • 打赏
  • 举报
回复
估计是超时了,你按1L的方法试试

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧