2

Ich arbeite mit Spring 4.0.3.RELEASE-Version. Ich kann erholsame Anrufe erfolgreich machen. Ich habe jedoch gelernt, dass HTTP-Verbindungen teuer sind und den Verbindungspool verwenden. Ich lese einige Artikel wie this und this. Alles ist in Ordnung, wenn ich die Abhängigkeit mit Maven3 einschließe und kompiliere. Die Probleme treten während der Laufzeit auf. Mit diesem Code erhalte ich eine Ausnahme für die Klasse PoolingHttpClientConnectionManager.Websphere-Probleme beim Einrichten von HTTP-Verbindungspool für RestTemplate

public RestTemplate restTemplate(){ 
    HttpHost host = new HttpHost("localhost", 9081); 
    PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); 
    // Increase max total connection to 200 
    cm.setMaxTotal(200); 
    cm.setDefaultMaxPerRoute(50);  
    cm.setMaxPerRoute(new HttpRoute(host), 20); 

    HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().setConnectionManager(cm); 
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
      httpClientBuilder.build()); 
    return new RestTemplate(requestFactory); 
} 

Und mit diesem Code, erhalte ich Klasse nicht gefunden Ausnahme für HttpClients.

public RestTemplate restTemplate(){ 
     RestTemplate restTemplate = new RestTemplate(); 
     HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); 
     requestFactory.setConnectTimeout(20000); 
     requestFactory.setReadTimeout(20000);  
     restTemplate.setRequestFactory(requestFactory); 
     return restTemplate; 
    } 

Ich bin auf Websphere 8.5 bereitstellen. Und ich habe verschiedene Versionen von httpclient von 4.0.1 bis 4.5.2 mit unterschiedlichem Umfang (vorausgesetzt, kompilieren) ohne Glück versucht. Vielen Dank im Voraus für einen Hinweis in die richtige Richtung.

Antwort

1

Also, es ist im Grunde ein Problem mit Websphere 8+ Versionen einschließlich httpclient mit ihrer jvm-Bibliothek. Zum Glück sind unsere Enterprise Websphere alle Version 7.5.x. Wenn wir also den httpclient mit dem Ohr bündeln, verursacht das kein Problem in der Produktion oder Vorproduktion.

Für diejenigen, die Websphere 8.x-Versionen verwenden müssen, verwenden Sie bitte die gemeinsame isolierte Bibliothek Ansatz as defined here. Ich benutzte das für meine lokale 8.5 Websphere und es funktioniert ziemlich ordentlich.

0

Sie sollten die Anwendung zu stoppen und dann Modul Registerkarte in Vsphere und verwalten und auf "Klassenlader Reihenfolge" Kombinationsfeld wählen Sie "Eltern letzten" Element und starten Sie dann die Anwendung. Problem gelöst ...

+0

Dies ist nicht der richtige Weg. Wie in der markierten Antwort erwähnt, ist der Shared-Library-Ansatz der richtige Weg, um auf ein jar zu verweisen, das sich von der Websphere-Container-Bibliothek unterscheidet. –