2016-10-20 2 views
0

Env: HttpClient 4.4.HttpClient Shared Verbindungsmanager

In HttpClientBuilder Klasse, kann ich folgenden Code sehen,

if (!this.connManagerShared){ 

    // ...some code 

    if (this.evictExpiredConnections || this.evictIdleConnections) { 

      final IdleConnectionEvictor connectionEvictor = new IdleConnectionEvictor((HttpClientConnectionManager) connManagerCopy, 
        this.maxIdleTime > 0L ? this.maxIdleTime : 10L, this.maxIdleTimeUnit != null ? this.maxIdleTimeUnit : TimeUnit.SECONDS); 
      closeablesCopy1.add(new Closeable() 
      { 
       public void close() throws IOException 
       { 
        connectionEvictor.shutdown(); 
       } 
      }); 
      connectionEvictor.start(); 
    } 
    // ...some code 
} 

ich nicht in der Lage bin, diese beiden Bedingungen zu korrelieren.

Warum hätten Sie IdleConnectionEvictor nicht, wenn Sie einen gemeinsamen Verbindungsmanager verwenden?

Antwort

0

Wenn man mehrere Instanzen von HttpClient erstellt, die einen einzigen Verbindungspool teilen, möchte man wahrscheinlich auch nur eine Instanz von IdleConnectionEvictor haben, würde man nicht? Was wäre der Punkt von mehreren IdleConnectionEvictor konkurrierenden für die Verbindung Pool-Sperre, um Leerlauf-Verbindungen zu vertreiben, wenn eine Instanz vollkommen ausreichen würde?

Verwandte Themen