in eureka-client-jersey2/src/main/java/com/netflix/discovery/shared/transport/jersey2/Jersey2ApplicationClientFactory.java [140:193]
public Jersey2ApplicationClientFactory build() {
ClientBuilder clientBuilder = ClientBuilder.newBuilder();
ClientConfig clientConfig = new ClientConfig();
for (ClientRequestFilter filter : additionalFilters) {
clientConfig.register(filter);
}
for (Feature feature : features) {
clientConfig.register(feature);
}
addProviders(clientConfig);
addSSLConfiguration(clientBuilder);
addProxyConfiguration(clientConfig);
if (hostnameVerifier != null) {
clientBuilder.hostnameVerifier(hostnameVerifier);
}
// Common properties to all clients
final String fullUserAgentName = (userAgent == null ? clientName : userAgent) + "/v" + buildVersion();
clientBuilder.register(new ClientRequestFilter() { // Can we do it better, without filter?
@Override
public void filter(ClientRequestContext requestContext) {
requestContext.getHeaders().put(HttpHeaders.USER_AGENT, Collections.<Object>singletonList(fullUserAgentName));
}
});
clientConfig.property(ClientProperties.FOLLOW_REDIRECTS, allowRedirect);
clientConfig.property(ClientProperties.READ_TIMEOUT, readTimeout);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, connectionTimeout);
clientBuilder.withConfig(clientConfig);
// Add gzip content encoding support
clientBuilder.register(new GZipEncoder());
// always enable client identity headers
String ip = myInstanceInfo == null ? null : myInstanceInfo.getIPAddr();
final AbstractEurekaIdentity identity = clientIdentity == null ? new EurekaClientIdentity(ip) : clientIdentity;
clientBuilder.register(new Jersey2EurekaIdentityHeaderFilter(identity));
JerseyClient jersey2Client = (JerseyClient) clientBuilder.build();
MultivaluedMap<String, Object> additionalHeaders = new MultivaluedHashMap<>();
if (allowRedirect) {
additionalHeaders.add(HTTP_X_DISCOVERY_ALLOW_REDIRECT, "true");
}
if (EurekaAccept.compact == eurekaAccept) {
additionalHeaders.add(EurekaAccept.HTTP_X_EUREKA_ACCEPT, eurekaAccept.name());
}
return new Jersey2ApplicationClientFactory(jersey2Client, additionalHeaders);
}