From: 刘洪青 Date: Thu, 5 Sep 2019 13:33:18 +0000 (+0800) Subject: fix: 修正feign client 调用异常问题 X-Git-Tag: v0.0.1^2~47 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=26098829dc8da42c41457bf1d3139f739f048139;p=institute%2Fsw-backend.git 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 @@ public class BaseFeignClientConfiguration { @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 @@ public class BaseFeignClientConfiguration { .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 @@ public class BizFeignClientConfiguration { @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 @@ public class BizFeignClientConfiguration { .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 @@ public class FeignClientBuilder { 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 @@ public class FeignClientBuilder { 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) {