[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpclient-commons-dev
Subject:    [jira] [Closed] (HTTPCLIENT-1739) repeated calls to HttpClients.custom.build take longer over time
From:       "Ralph Carlson (JIRA)" <jira () apache ! org>
Date:       2016-04-25 19:05:13
Message-ID: JIRA.12962338.1461608606000.26432.1461611113245 () Atlassian ! JIRA
[Download RAW message or body]


     [ https://issues.apache.org/jira/browse/HTTPCLIENT-1739?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]

Ralph Carlson closed HTTPCLIENT-1739.
-------------------------------------
    Resolution: Unresolved

I don't have time to compile example for it. I am looking for alternative http \
client, feel free to ignore issues

> repeated calls to HttpClients.custom.build take longer over time
> ----------------------------------------------------------------
> 
> Key: HTTPCLIENT-1739
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1739
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient
> Affects Versions: 4.5.2
> Environment: windows xp 32 bit, windows 7 64 bit and RedHat enterprise 7. Tested on \
> Web Server apache-tomee-plus-1.7.1/apache-tomee-plus-1.7.4 deployed as \
>                 @Webservice's calling external webservices using httpclient
> Reporter: Ralph Carlson
> Priority: Minor
> 
> (Tested on latest version and version 4.3 and both have same issue.)
> repeated calls to HttpClients.custom.build take longer over time. Tested using http \
> library in webservice that calls and outside webservice. Initially \
> HttpClients.custom.build run quickly for first several hundred, then takes \
> increasingly longer to create client despite all objects clean up as per api spec \
> each request. Some cache or code in the api takes longer and longer to create the \
> client and no api methods exposed that can change this, only solution now was to \
> create a Map to cache HttpClients so not creating new ones and look up HttpClient \
> you need based on input parameters.  sample code that when called over and over \
> again creates the issue: {code:java}
> protected static CloseableHttpClient _getCloseableHttpClient(HttpClientToolsInput \
> input) throws Exception {	//method
> 	         //--------------- you can cache these object as static final since never \
> change and still get the same result , included here as example code for bug  \
> SSLContextBuilder sslContextBuilder = SSLContexts.custom();      \
> sslContextBuilder.loadTrustMaterial(null, new TrustStrategy()   {
> 					public boolean isTrusted(X509Certificate[] chain, String authType) throws \
>                 CertificateException { return true; }	
> 					@Override	public boolean isTrusted(java.security.cert.X509Certificate[] \
> chain,String authType) throws CertificateException { return true; }  });
> 			SSLContext sslContext = sslContextBuilder.build();	
> 			
> 			SSLConnectionSocketFactory sslConnectionSocketFactory = new \
> SSLConnectionSocketFactory( sslContext, new String[] {"TLSv1", "TLSv1.1", \
> "TLSv1.2"},null,new HostnameVerifier()  {
> 			            public void verify(String host, X509Certificate cert) throws \
>                 SSLException { }
> 			            @Override public boolean verify(String s, SSLSession sslSession) { 
> return true; 
> }
> 			});  			
> 			
> 			Registry<ConnectionSocketFactory> socketFactoryRegistry = 
> 			                           RegistryBuilder.<ConnectionSocketFactory> \
> create().register("http", PlainConnectionSocketFactory.INSTANCE).register("https", \
> sslConnectionSocketFactory).build();  SSLConnectionSocketFactory sslsf = new \
> SSLConnectionSocketFactory(sslContextBuilder.build());			  //--------------- you \
> can cache these object as static final : end  //---------------  these objects \
> below are created and clean up each request  BasicHttpClientConnectionManager cm = \
> new BasicHttpClientConnectionManager(socketFactoryRegistry); RequestConfig \
>                 defaultRequestConfig = RequestConfig.custom().setSocketTimeout(
> 		                             input.getSocketTimeout()).setConnectTimeout(
> 		                             \
>                 input.getConnectionTimeout()).setConnectionRequestTimeout(
> 		                             input.getConnectionRequestTimeout()).build();        \
>   // ---------------- get same bug if modify code to use different client other \
> than CloseableHttpClient  // ---------------- the .build() method takes longer and \
> longer to build each cycle  CloseableHttpClient httpclient = \
>                 HttpClients.custom().setConnectionManager(cm)
> 			                         .setDefaultRequestConfig(defaultRequestConfig)
> 			                         .setSSLSocketFactory(sslsf)
> 			                         \
> .setDefaultCredentialsProvider(credsProvider).setSSLHostnameVerifier ( new \
> NoopHostnameVerifier() ).build();  
> 				<rest of code to make call - non relevant to bug>
> 				<cleanup code - non relevant to bug>
> 	} //method
> {code:java}
> this HttpClient.customer().build() method should take roughly same amount of time \
> to return object despite how many objects it created previously, now with enough \
> runs it can take minutes to return object(s)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic