Skip to content
Snippets Groups Projects
Commit 430832a4 authored by jakubs's avatar jakubs
Browse files

SSDM-2090: Fix a problem with leaking connections in service conversations

by setting connection reuse strategy on HttpClient to no reuse.

SVN: 34235
parent e3c163f1
No related branches found
No related tags found
No related merge requests found
...@@ -30,6 +30,7 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory; ...@@ -30,6 +30,7 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder; import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.SSLContexts; import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.impl.NoConnectionReuseStrategy;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
...@@ -84,7 +85,10 @@ public class HttpInvokerUtils ...@@ -84,7 +85,10 @@ public class HttpInvokerUtils
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(schemeRegistry); PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(schemeRegistry);
connectionManager.setMaxTotal(100); connectionManager.setMaxTotal(100);
connectionManager.setDefaultMaxPerRoute(5); connectionManager.setDefaultMaxPerRoute(5);
CloseableHttpClient client = HttpClientBuilder.create().setConnectionManager(connectionManager).useSystemProperties().build(); CloseableHttpClient client =
HttpClientBuilder.create().setConnectionManager(connectionManager).useSystemProperties()
.setConnectionReuseStrategy(new NoConnectionReuseStrategy())
.build();
HttpComponentsHttpInvokerRequestExecutor httpInvokerRequestExecutor = new HttpComponentsHttpInvokerRequestExecutor(client); HttpComponentsHttpInvokerRequestExecutor httpInvokerRequestExecutor = new HttpComponentsHttpInvokerRequestExecutor(client);
...@@ -100,7 +104,8 @@ public class HttpInvokerUtils ...@@ -100,7 +104,8 @@ public class HttpInvokerUtils
{ {
HttpHost proxy = new HttpHost(proxyAddressOrNull.getHostName(), proxyAddressOrNull.getPort(), "http"); HttpHost proxy = new HttpHost(proxyAddressOrNull.getHostName(), proxyAddressOrNull.getPort(), "http");
CloseableHttpClient client2 = CloseableHttpClient client2 =
HttpClientBuilder.create().setProxy(proxy).useSystemProperties().setConnectionManager(connectionManager).build(); HttpClientBuilder.create().setProxy(proxy).useSystemProperties().setConnectionManager(connectionManager)
.setConnectionReuseStrategy(new NoConnectionReuseStrategy()).build();
httpInvokerRequestExecutor.setHttpClient(client2); httpInvokerRequestExecutor.setHttpClient(client2);
} }
httpInvokerProxy.afterPropertiesSet(); httpInvokerProxy.afterPropertiesSet();
...@@ -132,12 +137,14 @@ public class HttpInvokerUtils ...@@ -132,12 +137,14 @@ public class HttpInvokerUtils
{ {
HttpHost proxy = new HttpHost(proxyAddressOrNull.getHostName(), proxyAddressOrNull.getPort(), "http"); HttpHost proxy = new HttpHost(proxyAddressOrNull.getHostName(), proxyAddressOrNull.getPort(), "http");
CloseableHttpClient client2 = CloseableHttpClient client2 =
HttpClientBuilder.create().setProxy(proxy).useSystemProperties().setConnectionManager(connectionManager).build(); HttpClientBuilder.create().setConnectionReuseStrategy(new NoConnectionReuseStrategy()).setProxy(proxy).useSystemProperties()
.setConnectionManager(connectionManager).build();
httpInvokerRequestExecutor.setHttpClient(client2); httpInvokerRequestExecutor.setHttpClient(client2);
} else } else
{ {
httpInvokerRequestExecutor httpInvokerRequestExecutor
.setHttpClient(HttpClientBuilder.create().useSystemProperties().setConnectionManager(connectionManager).build()); .setHttpClient(HttpClientBuilder.create().setConnectionReuseStrategy(new NoConnectionReuseStrategy()).useSystemProperties()
.setConnectionManager(connectionManager).build());
} }
httpInvokerProxy.afterPropertiesSet(); httpInvokerProxy.afterPropertiesSet();
return getCastedService(httpInvokerProxy); return getCastedService(httpInvokerProxy);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment