2017-09-08 3 views
0

나는 질문이 그리고 내가 우리가 PoolingHttpClientConnectionManager를 사용하는 경우는 연결을 재사용하기 때문에, 그것은 지출 연결 설정 (예 : ssl handshake, tcp enter code herehandshake 등)에 대한 시간을 줄일 것을 알고 What is httpconnection of PoolingHttpClientConnectionManager?.PoolingHttpClientConnectionManager가 연결을 관리하는 방법은 무엇입니까?

입니다.

그러나 HTTP 연결 재사용에 대해 이해하는 것은 연결 유지이며 서버가 지원할 때 사용할 수 있습니다. 호스트가 연결 유지 연결을 지원하지 않으면 연결 유지와 함께 호스트와 통신 할 수 없습니다.

그래서, 여기 내 질문은,

나는 비 연결 유지 서버 환경에서 연결을 관리 할 수 ​​PoolingHttpClientConnectionManager를 사용하는 경우, 은은 ConnectionManager는 연결을 관리합니까? 또는 요청 당 연결을 생성합니까?

ConnectionManager가 연결을 관리하는 경우 ConnectionManager가 연결을 유지하는 방법은 무엇입니까? 관리자는 주기적으로 바이트를 보냅니 까? 당신이 Apache http docs에서 연결이 무기한 살아 유지 될 수 역할을 할 HttpClient를 정의하지 않으면

답변

0

는 다음 연결 유지 헤더는 응답없는 경우

, HttpClient를 연결이 될 수 있습니다 가정 무기한으로 살렸다. 정의 할 경우

연결 유지 전략 example 참조 :

ConnectionKeepAliveStrategy myStrategy = new ConnectionKeepAliveStrategy() { 
    @Override 
    public long getKeepAliveDuration(HttpResponse response, HttpContext context) { 
     HeaderElementIterator it = new BasicHeaderElementIterator 
      (response.headerIterator(HTTP.CONN_KEEP_ALIVE)); 
     while (it.hasNext()) { 
      HeaderElement he = it.nextElement(); 
      String param = he.getName(); 
      String value = he.getValue(); 
      if (value != null && param.equalsIgnoreCase 
       ("timeout")) { 
       return Long.parseLong(value) * 1000; 
      } 
     } 
     return 5 * 1000; 
    } 
};