summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-07-15 13:19:45 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-07-15 13:19:45 +0200
commit6b2455b90df10bba5cc2ebe52bbbf5855e9569dc (patch)
treeadf7395ca77140b1fd414d40b4ca2d27b2928a7b /configserver
parent568249a0a60484d17eace7e239df92d8726e57a8 (diff)
Use VespaClientBuilderFactory in StateResource
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java18
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java14
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();
}
-
}