2016-06-25 15 views
1

Ich baue einen REST-Dienst, der intern andere Dienste aufruft, und wir verwenden dafür org.apache.cxf.jaxrs.client.WebClient.Wie verwende ich Verbindungspooling in cxf jaxrs webclient

Ich möchte HTTP-Verbindungspooling verwenden, um die Leistung zu verbessern, aber die Dokumentation ist nicht sehr klar darüber, wie dies zu tun ist oder ob dies überhaupt möglich ist. Hat hier jemand das gemacht? Die einzige andere Option, die ich mir vorstellen kann, ist die Wiederverwendung von Clients, aber ich möchte lieber nicht auf die ganze Reihe von Threadsicherheits- und Synchronisationsproblemen eingehen, die mit diesem Ansatz einhergehen.

Antwort

2

Standardmäßig verwendet CXF einen Transport, der auf dem Objekt in-JDK HttpURLConnection basiert, um HTTP-Anforderungen auszuführen.

Das Verbindungspooling wird ausgeführt, das es persistenten Verbindungen ermöglicht, die zugrunde liegende Socketverbindung für mehrere HTTP-Anforderungen wiederzuverwenden.

Set Systemeigenschaften (Standardwerte)

http.keepalive=true 
http.maxConnections=5 

Erhöhen Sie den Wert von http.maxConnections die maximale Anzahl von Verbindungen im Leerlauf zu setzen, die gleichzeitig am Leben gehalten werden, pro Ziel.

In diesem Beitrag werden einige Details erklärt, wie es

Java HttpURLConnection and pooling

funktioniert, wenn Sie simultane CXF auch ausgeführt viele Anfragen benötigen HttpAsyncClient die asynchronen Apache verwenden können. Ser Details hier