首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Apache HttpClient各超时的区别与联系?小弟我提供一点薄见,求板砖

2012-08-09 
Apache HttpClient各超时的区别与联系?我提供一点薄见,求板砖。Java codeclient.setConnectionTimeout(conn

Apache HttpClient各超时的区别与联系?我提供一点薄见,求板砖。

Java code
            client.setConnectionTimeout(connectionTimeout);            client.setTimeout(timeout);            client.setHttpConnectionFactoryTimeout(httpConnectionFactoryTimeout);

尽管上述三个方法已经过时,这里只是说明一下情况,不妨碍理解。

第一个是连接超时,就是TCP三次握手的连接超时。

第二个是客户端读数据的超时,如果这个时间内还没有读到response的数据,那么超时,这个时候,相当于断开。

第三个,求高手解释。

这三者值,个人认为: connectionTimeout(2秒足矣) < timeout (20秒) < httpConnectionFactoryTimeout (25秒)

[解决办法]
我是这么理解的:

第三个是从连接池里拿连接的时候,等待多久以后抛错。

httpclient所有的连接是放在一个池里,用完了扔进去,对于同一个域名的多次连接,是可以复用的,节省了握手时间。

打个比方。摘抄官方文档里:
Java code
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);// Increase max total connection to 200cm.setMaxTotal(200);// Increase default max connection per route to 20cm.setDefaultMaxPerRoute(20); 

热点排行