diff --git a/java/opensaber-client/pom.xml b/java/opensaber-client/pom.xml index e5cce41e0..1982c2a1d 100644 --- a/java/opensaber-client/pom.xml +++ b/java/opensaber-client/pom.xml @@ -56,6 +56,11 @@ spring-boot-starter-web 2.0.0.RELEASE + + org.apache.httpcomponents + httpclient + 4.5.5 + io.open-saber pojos diff --git a/java/opensaber-client/src/main/java/io/opensaber/registry/client/HttpClient.java b/java/opensaber-client/src/main/java/io/opensaber/registry/client/HttpClient.java index 9d7a55d2c..ba4a33f97 100644 --- a/java/opensaber-client/src/main/java/io/opensaber/registry/client/HttpClient.java +++ b/java/opensaber-client/src/main/java/io/opensaber/registry/client/HttpClient.java @@ -1,10 +1,12 @@ package io.opensaber.registry.client; import io.opensaber.pojos.Response; +import io.opensaber.registry.config.Configuration; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import java.util.HashMap; @@ -20,7 +22,11 @@ public static HttpClient getInstance() { private RestTemplate restTemplate; private HttpClient() { - restTemplate = new RestTemplate(); + HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); + requestFactory.setConnectTimeout(Configuration.HTTP_CONNECT_TIMEOUT); + requestFactory.setReadTimeout(Configuration.HTTP_READ_TIMEOUT); + requestFactory.setConnectionRequestTimeout(Configuration.HTTP_CONNECTION_REQUEST_TIMEOUT); + restTemplate = new RestTemplate(requestFactory); } public ResponseEntity post(String url, HttpHeaders headers, String payload) { diff --git a/java/opensaber-client/src/main/java/io/opensaber/registry/client/RestClient.java b/java/opensaber-client/src/main/java/io/opensaber/registry/client/RestClient.java index 7880fb02b..3f99a46a2 100644 --- a/java/opensaber-client/src/main/java/io/opensaber/registry/client/RestClient.java +++ b/java/opensaber-client/src/main/java/io/opensaber/registry/client/RestClient.java @@ -10,6 +10,8 @@ import io.opensaber.registry.client.data.RequestData; import io.opensaber.registry.client.data.ResponseData; import io.opensaber.registry.config.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; @@ -19,6 +21,8 @@ public class RestClient implements Client { + private static Logger logger = LoggerFactory.getLogger(RestClient.class); + private HttpClient httpClient; private static Type mapType = new TypeToken>(){}.getType(); diff --git a/java/opensaber-client/src/main/java/io/opensaber/registry/config/Configuration.java b/java/opensaber-client/src/main/java/io/opensaber/registry/config/Configuration.java index f265992ec..e0594c01c 100644 --- a/java/opensaber-client/src/main/java/io/opensaber/registry/config/Configuration.java +++ b/java/opensaber-client/src/main/java/io/opensaber/registry/config/Configuration.java @@ -38,4 +38,7 @@ private Config load() { public static final String HOST = Configuration.instance.config.getString("registry.service.host"); public static final Integer PORT = Configuration.instance.config.getInt("registry.service.port"); public static final String BASE_URL = Configuration.instance.config.getString("registry.service.baseUrl"); + public static final Integer HTTP_CONNECT_TIMEOUT = Configuration.instance.config.getInt("registry.http.connect-timeout"); + public static final Integer HTTP_READ_TIMEOUT = Configuration.instance.config.getInt("registry.http.read-timeout"); + public static final Integer HTTP_CONNECTION_REQUEST_TIMEOUT = Configuration.instance.config.getInt("registry.http.connection-request-timeout"); } diff --git a/java/opensaber-client/src/main/resources/application.conf b/java/opensaber-client/src/main/resources/application.conf index b8781b087..18e635d99 100644 --- a/java/opensaber-client/src/main/resources/application.conf +++ b/java/opensaber-client/src/main/resources/application.conf @@ -17,6 +17,16 @@ opensaber-client { port = 8080 baseUrl = "http://localhost:8080/" } + + # Values in milliseconds + http { + # connection timeout for underlying httpclient + connect-timeout = 10000 + # socket read timeout for underlying httpclient + read-timeout = 10000 + # connection request timeout from connection manager + connection-request-timeout = 10000 + } } staging { @@ -27,6 +37,16 @@ opensaber-client { port = 8080 baseUrl = "http://localhost:8080/" } + + # Values in milliseconds + http { + # connection timeout for underlying httpclient + connect-timeout = 10000 + # socket read timeout for underlying httpclient + read-timeout = 10000 + # connection request timeout from connection manager + connection-request-timeout = 10000 + } } } } \ No newline at end of file