From b555d0a086c88c29b40304802589b3ef77955ab9 Mon Sep 17 00:00:00 2001 From: "felix.wang" <59079269+felix-thinkingdata@users.noreply.github.com> Date: Thu, 30 Jul 2020 13:24:54 +0800 Subject: [PATCH] [Improvement][common] HttpClient singleton mode #3332 (#3350) * Optimize the httpclient * Optimize the httpclient singleton * Merge branch 'github-local/dev' into feature/httpClientsingleton # Conflicts: # dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java # dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java * Merge branch 'github-local/dev' into feature/httpClientsingleton # Conflicts: # dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java # dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java * Merge branch 'github-local/dev' into feature/httpClientsingleton # Conflicts: # dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java # dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java --- .../common/utils/HttpUtils.java | 20 +++++++++---------- .../common/utils/HttpUtilsTest.java | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java index 246aba1ef0..8ea15314a8 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java @@ -53,13 +53,19 @@ public class HttpUtils { public static final Logger logger = LoggerFactory.getLogger(HttpUtils.class); + private HttpUtils() { - private static CloseableHttpClient httpClient; + } - private HttpUtils() { + public static CloseableHttpClient getInstance(){ + return HttpClientInstance.httpClient; + } + private static class HttpClientInstance{ + private static final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build(); } + private static PoolingHttpClientConnectionManager cm; private static SSLContext ctx = null; @@ -112,20 +118,14 @@ public class HttpUtils { } - public static synchronized CloseableHttpClient getHttpClient() { - if (null == httpClient) { - httpClient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build(); - ; - } - return httpClient; - } + /** * get http request content * @param url url * @return http get request response content */ public static String get(String url){ - CloseableHttpClient httpclient = HttpUtils.getHttpClient(); + CloseableHttpClient httpclient = HttpUtils.getInstance(); HttpGet httpget = new HttpGet(url); String responseContent = null; diff --git a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java index 521260aded..aee7ac8880 100644 --- a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java +++ b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/HttpUtilsTest.java @@ -46,8 +46,8 @@ public class HttpUtilsTest { @Test public void testGetHttpClient() { - CloseableHttpClient httpClient1 = HttpUtils.getHttpClient(); - CloseableHttpClient httpClient2 = HttpUtils.getHttpClient(); + CloseableHttpClient httpClient1 = HttpUtils.getInstance(); + CloseableHttpClient httpClient2 = HttpUtils.getInstance(); Assert.assertEquals(httpClient1, httpClient2); } }