package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration;
+import org.apache.http.conn.HttpClientConnectionManager;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
import org.springframework.context.annotation.Bean;
import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
@Value("${sw-backend-base-api.client-auth.key-store:}") String keyStore,
@Value("${sw-backend-base-api.client-auth.key-store-password:}") String keyStorePassword,
@Value("${sw-backend-base-api.client-auth.trust-store:}") String trustStore,
- @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword) {
+ @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword,
+ ApacheHttpClientFactory httpClientFactory,
+ HttpClientConnectionManager httpClientConnectionManager) {
return FeignClientBuilder.builder()
.enabled(enabled)
.trustStore(trustStore)
.trustStorePassword(trustStorePassword)
.build()
- .client();
+ .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
}
}
package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration;
+import org.apache.http.conn.HttpClientConnectionManager;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
import org.springframework.context.annotation.Bean;
import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
@Value("${sw-backend-biz-api.client-auth.key-store:}") String keyStore,
@Value("${sw-backend-biz-api.client-auth.key-store-password:}") String keyStorePassword,
@Value("${sw-backend-biz-api.client-auth.trust-store:}") String trustStore,
- @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword) {
+ @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword,
+ ApacheHttpClientFactory httpClientFactory,
+ HttpClientConnectionManager httpClientConnectionManager) {
return FeignClientBuilder.builder()
.enabled(enabled)
.trustStore(trustStore)
.trustStorePassword(trustStorePassword)
.build()
- .client();
+ .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
}
}
package com.supwisdom.institute.backend.common.core.feign;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
import org.springframework.util.ResourceUtils;
-import feign.Client;
import feign.httpclient.ApacheHttpClient;
@Slf4j
private String trustStore;
private String trustStorePassword;
- public Client client() {
+ public ApacheHttpClient apacheHttpClient(
+ ApacheHttpClientFactory httpClientFactory,
+ HttpClientConnectionManager httpClientConnectionManager) {
if (!enabled) {
return new ApacheHttpClient();
SSLContext sslContext = sslContextBuilder.build();
- SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+ //SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setConnectTimeout(12000)
+ .setRedirectsEnabled(true)
+ .build();
+
+ CloseableHttpClient httpClient = httpClientFactory.createBuilder().
+ setSSLContext(sslContext).
+ setSSLHostnameVerifier(new NoopHostnameVerifier()). // FIXME: HostnameVerifier
+ setConnectionManager(httpClientConnectionManager).
+ setDefaultRequestConfig(defaultRequestConfig).build();
+
- Client trustSSLSockets = new Client.Default(sslSocketFactory, new NoopHostnameVerifier()); // FIXME: feign Client
+ ApacheHttpClient trustSSLSockets = new ApacheHttpClient(httpClient);
log.info("feignClient load with ssl.");
return trustSSLSockets;
} catch (Exception e) {