diff options
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java | 18 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java | 14 |
2 files changed, 21 insertions, 11 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java index 5dcdfcdaf37..cc452421d2d 100644 --- a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java +++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java @@ -1,20 +1,28 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.serviceview; +import ai.vespa.util.http.VespaClientBuilderFactory; +import com.google.inject.Inject; import com.yahoo.cloud.config.ConfigserverConfig; +import com.yahoo.component.AbstractComponent; /** * Wrapper for settings from the cloud.config.configserver config. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class ConfigServerLocation { - public final int restApiPort; +public class ConfigServerLocation extends AbstractComponent { + final int restApiPort; + // The client factory must be owned by a component as StateResource is instantiated per request + final VespaClientBuilderFactory clientBuilderFactory = new VespaClientBuilderFactory(); + + @Inject public ConfigServerLocation(ConfigserverConfig configServer) { restApiPort = configServer.httpport(); } + @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -22,4 +30,8 @@ public class ConfigServerLocation { return builder.toString(); } + @Override + public void deconstruct() { + clientBuilderFactory.close(); + } } diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java index a6d4c229500..c58f3659ca5 100644 --- a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java +++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.serviceview; +import ai.vespa.util.http.VespaClientBuilderFactory; import com.yahoo.container.jaxrs.annotation.Component; import com.yahoo.vespa.serviceview.bindings.ApplicationView; import com.yahoo.vespa.serviceview.bindings.ConfigClient; @@ -14,7 +15,6 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Context; @@ -28,8 +28,6 @@ import java.util.List; import java.util.ListIterator; import java.util.Map; -import static java.util.Collections.singletonList; - /** * A web service to discover and proxy Vespa service state info. @@ -42,6 +40,7 @@ public class StateResource implements StateClient { private static final String USER_AGENT = "service-view-config-server-client"; private static final String SINGLE_API_LINK = "url"; + private final VespaClientBuilderFactory clientBuilderFactory; private final int restApiPort; private final String host; private final UriInfo uriInfo; @@ -58,6 +57,7 @@ public class StateResource implements StateClient { } public StateResource(@Component ConfigServerLocation configServer, @Context UriInfo ui) { + this.clientBuilderFactory = configServer.clientBuilderFactory; this.restApiPort = configServer.restApiPort; this.host = "localhost"; this.uriInfo = ui; @@ -278,11 +278,9 @@ public class StateResource implements StateClient { newUri.append(link.getRawPath()); } - private static Client client() { - return ClientBuilder.newBuilder() - .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT, - singletonList(USER_AGENT))) + private Client client() { + return clientBuilderFactory.newBuilder() + .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT, List.of(USER_AGENT))) .build(); } - } |