PoolingClientConnectionManager中“per route basis”的含义是什么?

时间:2012-08-19 17:50:06

标签: java apache http

不推荐使用

ThreadSafeClientConnManager,并引入了一种新方法PoolingClientConnectionManager

PoolingClientConnectionManager的文档说

  

管理客户端连接池并能够为连接提供服务   来自多个执行线程的请求。连接汇集在一个   每条路线。

我的问题

每条路线的含义是什么?

3 个答案:

答案 0 :(得分:8)

简单来说,每条路线意味着您连接的主机。

PoolingHttpClientConnectionManager维护每个路由和总计的最大连接数限制。默认情况下,此实现将为每个给定路由创建不超过2个并发连接,并且总共不再有20个连接。

答案 1 :(得分:4)

它指的是HttpRoute。 HttpRoute用于描述在同一Web服务器上运行的多个应用程序。

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/routing/HttpRoute.html

使用如下:

ClientConnectionRequest connRequest = connMrg.requestConnection(
        new HttpRoute(new HttpHost("localhost", 80)), null);
ManagedClientConnection conn = connRequest.getConnection(10, TimeUnit.SECONDS);
try {
    BasicHttpRequest request = new BasicHttpRequest("GET", "/");
    conn.sendRequestHeader(request);
    HttpResponse response = conn.receiveResponseHeader();
    conn.receiveResponseEntity(response);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        BasicManagedEntity managedEntity = new BasicManagedEntity(entity, conn, true);
        // Replace entity
        response.setEntity(managedEntity);
    }
    // Do something useful with the response
    // The connection will be released automatically 
    // as soon as the response content has been consumed
} catch (IOException ex) {
    // Abort connection upon an I/O error.
    conn.abortConnection();
    throw ex;
}

来源:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html

答案 2 :(得分:-1)

如果你想了解一条路线是什么(因此每条路线的真正意义)Node.js's express tutorial对一条路线有一个很好的参考/描述。它是URI(/ URL),HTTP请求方法(GET,POST等)以及端点的一个或多个处理程序的组合。这里的“处理程序”是使用特定的HTTP请求方法(如GET等)命中给定URL时执行的函数或方法。