Ich bin ein Multi-Threaded-REST-Client zu schreiben, die verschiedenen APIs für verschiedene Zwecke verwendet, für diese Anforderungen machen ich ein Httpclient mit verschiedenen Methoden verwenden (GET, PUT, POST)Effiziente Weise Apache verwenden Httpclient
Thema 1:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httpclient.execute(httppost);
methodThatNeedsHttpClient(httpclient);
public void methodThatNeedsHttpClient(HttpClient client) {
//perform other GET/POST/PUT requests
}
Thema 2:
DefaultHttpClient httpclient2 = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httpclient2.execute(httppost);
// Other methods
ich gelesen, dass httpConnections für die Verwaltung, ich soll einen Connection Manager verwenden. Ich bin auf Version 4.5 des Clients, welchen Verbindungsmanager soll ich verwenden? Wie stellt der Verbindungsmanager sicher, dass Verbindungen nicht undicht sind und effizient genutzt werden?
Ich habe versucht, die folgende Implementierung:
PoolingClientConnectionManager connectionManager = new PoolingClientConnectionManager();
connectionManager.setMaxTotal(5);
// Perform REST operations
client.getConnectionManager().shutdown();
Aber ich bin nicht sicher, wie Verbindungen im Pool verwaltet werden, für ein Multithreading-System, wird der Verbindungs-Manager in jedem Thread initialisiert werden?