ThreadSafeClientConnManager is deprecated and a new method is introduced PoolingClientConnectionManager.
The documentation of PoolingClientConnectionManager says
Manages a pool of client connections and is able to service connection requests from multiple execution threads. Connections are pooled on a per route basis.
My Question
What is the meaning of per route basis here?
Put it in simple term, per route means per host you are connecting to.
PoolingHttpClientConnectionManager maintains a maximum limit of connections on a per route basis and in total. Per default this implementation will create no more than 2 concurrent connections per given route and no more 20 connections in total.
It refers to the HttpRoute. The HttpRoute is to delineate multiple applications running on the same web server.
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/routing/HttpRoute.html
It is used like below:
source: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html
If you wish to understand what a route is (and hence what per-route basis really means) Node.js's express tutorial has a nice reference/description to what a route is. It is a combination of a URI (/URL), a HTTP request method (GET, POST etc), and one or more handlers for the endpoint. Here the "handler" is the function or method that gets executed when you hit the given URL using a specific HTTP request method (like GET etc).