Если я использую BasicHttpClientConnectionManager и выполняю запрос к тому же URL-адресу, повторно ли он использует соединение? - PullRequest
0 голосов
/ 28 сентября 2018
String URL_A ="http://www.google.com/";
BasicHttpClientConnectionManager connManager =new BasicHttpClientConnectionManager();
HttpClientBuilder httpBuilder = HttpClients.custom();
httpBuilder.setConnectionManager(connManager);
HttpClient httpClient = httpBuilder.build();
//First Execution
HttpGet httpGet = new HttpGet(URL_A);
HttpResponse httpResponse = httpClient.execute(httpGet);
EntityUtils.consume(httpResponse.getEntity());

//Second Execution
HttpGet httpGet2 = new HttpGet(URL_A);
HttpResponse httpResponse2 = httpClient.execute(httpGet2);
EntityUtils.consume(httpResponse2.getEntity());

Повторно использует ли // Второе выполнение Соединение, установленное в // Первом выполнении?

1 Ответ

0 голосов
/ 28 сентября 2018

для того же URL оказывается, что он использует Соединение.как указано в коде, извлеченном из BasicHttpClientConnectionManager

synchronized HttpClientConnection getConnection(final HttpRoute route, final Object state) {
        Asserts.check(!this.isShutdown.get(), "Connection manager has been shut down");
        if (this.log.isDebugEnabled()) {
            this.log.debug("Get connection for route " + route);
        }
        Asserts.check(!this.leased, "Connection is still allocated");

if (! LangUtils.equals (this.route, route) ||! LangUtils.equals (this.state, state)) {closeConnection ();}

        this.route = route;
        this.state = state;
        checkExpiry();
        if (this.conn == null) {
            this.conn = this.connFactory.create(route, this.connConfig);
        }
        this.conn.setSocketTimeout(this.socketConfig.getSoTimeout());
        this.leased = true;
        return this.conn;
    }
...