private JerseyEurekaHttpClientFactory buildExperimental(Map<String, String> additionalHeaders) { ThreadSafeClientConnManager cm = createConnectionManager(); ClientConfig clientConfig = new DefaultApacheHttpClient4Config(); if (proxyHost != null) { addProxyConfiguration(clientConfig); } DiscoveryJerseyProvider discoveryJerseyProvider = new DiscoveryJerseyProvider(encoderWrapper, decoderWrapper); clientConfig.getSingletons().add(discoveryJerseyProvider); // Common properties to all clients cm.setDefaultMaxPerRoute(maxConnectionsPerHost); cm.setMaxTotal(maxTotalConnections); clientConfig.getProperties().put(ApacheHttpClient4Config.PROPERTY_CONNECTION_MANAGER, cm); String fullUserAgentName = (userAgent == null ? clientName : userAgent) + "/v" + buildVersion(); clientConfig.getProperties().put(CoreProtocolPNames.USER_AGENT, fullUserAgentName); // To pin a client to specific server in case redirect happens, we handle redirects directly // (see DiscoveryClient.makeRemoteCall methods). clientConfig.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, Boolean.FALSE); clientConfig.getProperties().put(ClientPNames.HANDLE_REDIRECTS, Boolean.FALSE); ApacheHttpClient4 apacheClient = ApacheHttpClient4.create(clientConfig); addFilters(apacheClient); return new JerseyEurekaHttpClientFactory(apacheClient, connectionIdleTimeout, additionalHeaders); }
private void addFilters(ApacheHttpClient4 discoveryApacheClient) { // Add gzip content encoding support discoveryApacheClient.addFilter(new GZIPContentEncodingFilter(false)); // always enable client identity headers String ip = myInstanceInfo == null ? null : myInstanceInfo.getIPAddr(); AbstractEurekaIdentity identity = clientIdentity == null ? new EurekaClientIdentity(ip) : clientIdentity; discoveryApacheClient.addFilter(new EurekaIdentityHeaderFilter(identity)); if (additionalFilters != null) { for (ClientFilter filter : additionalFilters) { if (filter != null) { discoveryApacheClient.addFilter(filter); } } } } }
public EurekaJerseyClientImpl(int connectionTimeout, int readTimeout, final int connectionIdleTimeout, ClientConfig clientConfig) { try { jerseyClientConfig = clientConfig; apacheHttpClient = ApacheHttpClient4.create(jerseyClientConfig); HttpParams params = apacheHttpClient.getClientHandler().getHttpClient().getParams(); HttpConnectionParams.setConnectionTimeout(params, connectionTimeout); HttpConnectionParams.setSoTimeout(params, readTimeout); this.apacheHttpClientConnectionCleaner = new ApacheHttpClientConnectionCleaner(apacheHttpClient, connectionIdleTimeout); } catch (Throwable e) { throw new RuntimeException("Cannot create Jersey client", e); } }
private static ApacheHttpClient4 createDefaultJerseyClient(HttpClientConfiguration configuration, MetricRegistry metricRegistry, String serviceName) { HttpClient httpClient = new HttpClientBuilder(metricRegistry).using(configuration).build(serviceName); ApacheHttpClient4Handler handler = new ApacheHttpClient4Handler(httpClient, null, true); ApacheHttpClient4Config config = new DefaultApacheHttpClient4Config(); config.getSingletons().add(new JacksonMessageBodyProvider(Jackson.newObjectMapper(), _validatorFactory.getValidator())); return new ApacheHttpClient4(handler, config); }
connection = null; if (client != null) { client.destroy(); client = null; 32 * 1024); client = ApacheHttpClient4.create(config); checkFirstRequest = false; client.addFilter(new HTTPBasicAuthFilter(user, password)); } else if (authenType == Authentication.DIGEST) { checkFirstRequest = true; client.addFilter(new DigestChallengeFilter()); client.addFilter(new HTTPDigestAuthFilter(user, password)); } else { throw new MarkLogicInternalException( connection = client.resource(baseUri);
protected ApacheHttpClient4 doCreateHttpClientFor( final ConnectionInfo connectionInfo, final XStream xstream ) { final ApacheHttpClient4Config config = new DefaultApacheHttpClient4Config(); config.getSingletons().add( new XStreamXmlProvider( xstream, APPLICATION_XML_UTF8_TYPE ) ); // set _real_ URL for baseUrl, and not a redirection (typically http instead of https) config.getProperties().put( ApacheHttpClient4Config.PROPERTY_FOLLOW_REDIRECTS, Boolean.FALSE ); config.getFeatures().put( JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE ); applyAuthenticationIfAny( connectionInfo, config ); applyProxyIfAny( connectionInfo, config ); final ApacheHttpClient4 client = ApacheHttpClient4.create( config ); // set UA client.getClientHandler().getHttpClient().getParams().setParameter( CoreProtocolPNames.USER_AGENT, "Nexus-Client/" + discoverClientVersion() ); // NXCM-4547 JERSEY-1293 Enforce proxy setting on httpclient enforceProxyUri( config, client ); if ( LOG.isDebugEnabled() ) { client.addFilter( new LoggingFilter() ); } return client; }
/** * Create a default client with client configuration. * * @param cc the client configuration. * @return a default client. */ public static ApacheHttpClient4 create(final ClientConfig cc) { return new ApacheHttpClient4(createDefaultClientHandler(cc), cc); }
public void cleanIdle(long delayMs) { Stopwatch start = executionTimeStats.start(); try { apacheHttpClient.getClientHandler().getHttpClient() .getConnectionManager() .closeIdleConnections(delayMs, TimeUnit.SECONDS); } catch (Throwable e) { logger.error("Cannot clean connections", e); cleanupFailed.increment(); } finally { if (null != start) { start.stop(); } } } }
String urlPath = delta ? "apps/delta" : "apps/"; response = discoveryApacheClient.resource(this.remoteRegionURL + urlPath) .accept(MediaType.APPLICATION_JSON_TYPE) .get(ClientResponse.class);
/** * Clean up resources. */ @Override public void destroyResources() { apacheHttpClientConnectionCleaner.shutdown(); apacheHttpClient.destroy(); }
private static ApacheHttpClient4 createDefaultJerseyClient(HttpClientConfiguration configuration, String serviceName, MetricRegistry metricRegistry) { HttpClient httpClient = new HttpClientBuilder(metricRegistry).using(configuration).build(serviceName); ApacheHttpClient4Handler handler = new ApacheHttpClient4Handler(httpClient, null, true); ApacheHttpClient4Config config = new DefaultApacheHttpClient4Config(); config.getSingletons().add(new JacksonMessageBodyProvider(Jackson.newObjectMapper(), _validatorFactory.getValidator())); return new ApacheHttpClient4(handler, config); }
/** * Create a default client with client configuration and component provider. * * @param cc the client configuration. * @param provider the IoC component provider factory. * @return a default client. */ public static ApacheHttpClient4 create(final ClientConfig cc, final IoCComponentProviderFactory provider) { return new ApacheHttpClient4(createDefaultClientHandler(cc), cc, provider); }
@Override public HttpClient getClientImplementation() { if (client == null) return null; return client.getClientHandler().getHttpClient(); }
@Override public EurekaHttpResponse<Void> statusUpdate(String asgName, ASGStatus newStatus) { ClientResponse response = null; try { String urlPath = "asg/" + asgName + "/status"; response = jerseyApacheClient.resource(serviceUrl) .path(urlPath) .queryParam("value", newStatus.name()) .header(PeerEurekaNode.HEADER_REPLICATION, "true") .put(ClientResponse.class); return EurekaHttpResponse.status(response.getStatus()); } finally { if (response != null) { response.close(); } } }
@Override public void shutdown() { if (cleaner != null) { cleaner.shutdown(); } if (jerseyClient != null) { jerseyClient.destroyResources(); } else { apacheClient.destroy(); } }
private static ApacheHttpClient4 createDefaultJerseyClient(HttpClientConfiguration configuration, String serviceName, MetricRegistry metricRegistry) { HttpClient httpClient = new HttpClientBuilder(metricRegistry).using(configuration).build(serviceName); ApacheHttpClient4Handler handler = new ApacheHttpClient4Handler(httpClient, null, true); ApacheHttpClient4Config config = new DefaultApacheHttpClient4Config(); config.getSingletons().add(new JacksonMessageBodyProvider(Jackson.newObjectMapper(), _validatorFactory.getValidator())); return new ApacheHttpClient4(handler, config); }
client = ApacheHttpClient4.create( data.config ); if ( data.basicAuthentication != null ) { client.addFilter( data.basicAuthentication );
public EurekaJerseyClientImpl(int connectionTimeout, int readTimeout, final int connectionIdleTimeout, ClientConfig clientConfig) { try { jerseyClientConfig = clientConfig; apacheHttpClient = ApacheHttpClient4.create(jerseyClientConfig); HttpParams params = apacheHttpClient.getClientHandler().getHttpClient().getParams(); HttpConnectionParams.setConnectionTimeout(params, connectionTimeout); HttpConnectionParams.setSoTimeout(params, readTimeout); this.apacheHttpClientConnectionCleaner = new ApacheHttpClientConnectionCleaner(apacheHttpClient, connectionIdleTimeout); } catch (Throwable e) { throw new RuntimeException("Cannot create Jersey client", e); } }
/** * Create a default client. * * @return a default client. */ public static ApacheHttpClient4 create() { return new ApacheHttpClient4(createDefaultClientHandler(null)); }