You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/11 06:13:14 UTC
[28/50] [abbrv] git commit: RestClient now using a ConnectionManager
pool.
RestClient now using a ConnectionManager pool.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6679d063
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6679d063
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6679d063
Branch: refs/heads/master
Commit: 6679d0630ea5a3c356fb9f7febcbd78b7728da25
Parents: 9e25fcd
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:42:49 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/rest/RestClient.java | 47 +++++++++++++-------
1 file changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6679d063/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
index 061c6d6..7d55c70 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
@@ -18,23 +18,30 @@
*/
package org.apache.stratos.kubernetes.client.rest;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.SocketException;
import java.net.URI;
-import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.conn.PoolingClientConnectionManager;
public class RestClient {
private DefaultHttpClient httpClient;
+
+ public RestClient() {
+ PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
+ // Increase max total connection to 200
+ cm.setMaxTotal(200);
+ // Increase default max connection per route to 50
+ cm.setDefaultMaxPerRoute(50);
+
+ httpClient = new DefaultHttpClient(cm);
+ }
/**
* Handle http post request. Return String
@@ -54,9 +61,9 @@ public class RestClient {
* if any errors occur when executing the request
*/
public KubernetesResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
+ HttpPost postRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpPost postRequest = new HttpPost(resourcePath);
+ postRequest = new HttpPost(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -66,7 +73,7 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(postRequest);
}
}
@@ -86,22 +93,22 @@ public class RestClient {
* if any errors occur when executing the request
*/
public KubernetesResponse doGet(URI resourcePath) throws Exception{
+ HttpGet getRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpGet getRequest = new HttpGet(resourcePath);
+ getRequest = new HttpGet(resourcePath);
getRequest.addHeader("Content-Type", "application/json");
KubernetesResponse response = httpClient.execute(getRequest, new KubernetesResponseHandler());
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(getRequest);
}
}
public KubernetesResponse doDelete(URI resourcePath) throws Exception {
+ HttpDelete httpDelete = null;
try {
- httpClient = new DefaultHttpClient();
- HttpDelete httpDelete = new HttpDelete(resourcePath);
+ httpDelete = new HttpDelete(resourcePath);
httpDelete.addHeader("Content-Type", "application/json");
KubernetesResponse response = httpClient.execute(httpDelete, new KubernetesResponseHandler());
@@ -109,15 +116,15 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(httpDelete);
}
}
public KubernetesResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
+ HttpPut putRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpPut putRequest = new HttpPut(resourcePath);
+ putRequest = new HttpPut(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -128,8 +135,14 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(putRequest);
}
}
+
+ private void releaseConnection(HttpRequestBase request) {
+ if (request != null) {
+ request.releaseConnection();
+ }
+ }
}
\ No newline at end of file