summaryrefslogtreecommitdiff
path: root/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java')
-rw-r--r--eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java44
1 files changed, 39 insertions, 5 deletions
diff --git a/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java
index 4e811eaa..b53226ce 100644
--- a/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java
+++ b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/HttpClientFactory.java
@@ -65,7 +65,11 @@ public class HttpClientFactory implements IHttpClientFactory {
public static final String PROP_CONFIG_CLIENT_HTTP_CONNECTION_TIMEOUT_CONNECTION =
"client.http.connection.timeout.connection";
public static final String PROP_CONFIG_CLIENT_HTTP_CONNECTION_TIMEOUT_REQUEST =
- "client.http.connection.timeout.request";
+ "client.http.connection.timeout.request";
+ public static final String PROP_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_COUNT =
+ "client.http.connection.retry.count";
+ public static final String PROP_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_POST =
+ "client.http.connection.retry.post";
public static final String PROP_CONFIG_CLIENT_HTTP_SSL_HOSTNAMEVERIFIER_TRUSTALL =
"client.http.ssl.hostnameverifier.trustall";
@@ -91,7 +95,9 @@ public class HttpClientFactory implements IHttpClientFactory {
public static final String DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_TIMEOUT_REQUEST = "30";
public static final String DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_POOL_MAXTOTAL = "500";
public static final String DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_POOL_MAXPERROUTE = "100";
-
+ public static final String DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_COUNT = "3";
+ public static final String DEFAUTL_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_POST = String.valueOf(false);
+
private String defaultConfigurationId = null;
private final Map<String, HttpClientBuilder> availableBuilders = new HashMap<>();
@@ -127,8 +133,11 @@ public class HttpClientFactory implements IHttpClientFactory {
config.validate();
builder = HttpClients.custom();
+
+ //inject request configuration
builder.setDefaultRequestConfig(buildDefaultRequestConfig());
-
+ injectInternalRetryHandler(builder, config);
+
//inject basic authentication infos
injectBasicAuthenticationIfRequired(builder, config);
@@ -147,6 +156,22 @@ public class HttpClientFactory implements IHttpClientFactory {
}
+ private void injectInternalRetryHandler(HttpClientBuilder builder, HttpClientConfiguration config) {
+ if (config.getHttpErrorRetryCount() > 0) {
+ log.info("Set HTTP error-retry to {} for http-client: {}",
+ config.getHttpErrorRetryCount(), config.getFriendlyName());
+ builder.setRetryHandler(new EaafHttpRequestRetryHandler(
+ config.getHttpErrorRetryCount(),
+ config.isHttpErrorRetryPost()));
+
+ } else {
+ log.info("Disable HTTP error-retry for http-client: {}", config.getFriendlyName());
+ builder.disableAutomaticRetries();
+
+ }
+
+ }
+
@PostConstruct
private void initalize() throws EaafException {
final HttpClientConfiguration defaultHttpClientConfig = buildDefaultHttpClientConfiguration();
@@ -157,7 +182,8 @@ public class HttpClientFactory implements IHttpClientFactory {
// set default request configuration
defaultHttpClientBuilder.setDefaultRequestConfig(buildDefaultRequestConfig());
-
+ injectInternalRetryHandler(defaultHttpClientBuilder, defaultHttpClientConfig);
+
//inject http basic authentication
injectBasicAuthenticationIfRequired(defaultHttpClientBuilder, defaultHttpClientConfig);
@@ -205,6 +231,14 @@ public class HttpClientFactory implements IHttpClientFactory {
config.setDisableHostnameValidation(basicConfig.getBasicConfigurationBoolean(
PROP_CONFIG_CLIENT_HTTP_SSL_HOSTNAMEVERIFIER_TRUSTALL, false));
+ config.setHttpErrorRetryCount(Integer.parseInt(basicConfig.getBasicConfiguration(
+ PROP_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_COUNT,
+ DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_COUNT)));
+ config.setHttpErrorRetryPost(Boolean.parseBoolean(basicConfig.getBasicConfiguration(
+ PROP_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_POST,
+ DEFAUTL_CONFIG_CLIENT_HTTP_CONNECTION_RETRY_POST)));
+
+
// validate configuration object
config.validate();
@@ -324,7 +358,7 @@ public class HttpClientFactory implements IHttpClientFactory {
.setSocketTimeout(Integer.parseInt(
basicConfig.getBasicConfiguration(PROP_CONFIG_CLIENT_HTTP_CONNECTION_TIMEOUT_SOCKET,
DEFAULT_CONFIG_CLIENT_HTTP_CONNECTION_TIMEOUT_SOCKET))
- * 1000)
+ * 1000)
.build();
return requestConfig;