fix: 修正feign client 调用异常问题
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
index 68e44f9..1e4e614 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
+++ b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
@@ -1,6 +1,8 @@
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;
@@ -16,7 +18,9 @@
@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)
@@ -26,7 +30,7 @@
.trustStore(trustStore)
.trustStorePassword(trustStorePassword)
.build()
- .client();
+ .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
}
}
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
index 88f5cda..ca60e7d 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
+++ b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
@@ -1,6 +1,8 @@
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;
@@ -16,7 +18,9 @@
@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)
@@ -26,7 +30,7 @@
.trustStore(trustStore)
.trustStorePassword(trustStorePassword)
.build()
- .client();
+ .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
}
}
diff --git a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
index 181ad10..d970094 100644
--- a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
+++ b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
@@ -1,16 +1,18 @@
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
@@ -25,7 +27,9 @@
private String trustStore;
private String trustStorePassword;
- public Client client() {
+ public ApacheHttpClient apacheHttpClient(
+ ApacheHttpClientFactory httpClientFactory,
+ HttpClientConnectionManager httpClientConnectionManager) {
if (!enabled) {
return new ApacheHttpClient();
@@ -54,9 +58,21 @@
SSLContext sslContext = sslContextBuilder.build();
- SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+ //SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setConnectTimeout(12000)
+ .setRedirectsEnabled(true)
+ .build();
- Client trustSSLSockets = new Client.Default(sslSocketFactory, new NoopHostnameVerifier()); // FIXME: feign Client
+ CloseableHttpClient httpClient = httpClientFactory.createBuilder().
+ setSSLContext(sslContext).
+ setSSLHostnameVerifier(new NoopHostnameVerifier()). // FIXME: HostnameVerifier
+ setConnectionManager(httpClientConnectionManager).
+ setDefaultRequestConfig(defaultRequestConfig).build();
+
+
+ ApacheHttpClient trustSSLSockets = new ApacheHttpClient(httpClient);
log.info("feignClient load with ssl.");
return trustSSLSockets;
} catch (Exception e) {