|
@@ -1,14 +1,67 @@
|
|
|
package com.management.platform.config;
|
|
|
|
|
|
+import org.apache.http.client.HttpClient;
|
|
|
+import org.apache.http.client.config.RequestConfig;
|
|
|
+import org.apache.http.config.Registry;
|
|
|
+import org.apache.http.config.RegistryBuilder;
|
|
|
+import org.apache.http.conn.socket.ConnectionSocketFactory;
|
|
|
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
|
|
|
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
|
|
|
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
|
|
+import org.apache.http.conn.ssl.TrustStrategy;
|
|
|
+import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
+import org.apache.http.impl.client.HttpClientBuilder;
|
|
|
+import org.apache.http.impl.client.HttpClients;
|
|
|
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
|
|
|
+import org.apache.http.ssl.SSLContexts;
|
|
|
+import org.apache.tomcat.jni.SSL;
|
|
|
import org.springframework.boot.web.client.RestTemplateBuilder;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.http.client.ClientHttpRequestFactory;
|
|
|
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
+import javax.net.ssl.SSLContext;
|
|
|
+import java.security.KeyManagementException;
|
|
|
+import java.security.KeyStoreException;
|
|
|
+import java.security.NoSuchAlgorithmException;
|
|
|
+
|
|
|
@Configuration
|
|
|
public class Config {
|
|
|
+
|
|
|
@Bean
|
|
|
- public RestTemplate restTemplate(RestTemplateBuilder builder){
|
|
|
- return builder.build();
|
|
|
+ public RestTemplate restTemplate()
|
|
|
+ {
|
|
|
+ ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());
|
|
|
+ System.out.println("@@@===初始化RestRemplate===@@");
|
|
|
+ return new RestTemplate(requestFactory);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * Apache HttpClient
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ * @see [类、类#方法、类#成员]
|
|
|
+ */
|
|
|
+ private HttpClient httpClient()
|
|
|
+ {
|
|
|
+ // 支持HTTP、HTTPS
|
|
|
+ Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory> create()
|
|
|
+ .register("http", PlainConnectionSocketFactory.getSocketFactory())
|
|
|
+ .register("https", SSLConnectionSocketFactory.getSocketFactory())
|
|
|
+ .build();
|
|
|
+ PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
|
|
|
+ connectionManager.setMaxTotal(200);
|
|
|
+ connectionManager.setDefaultMaxPerRoute(100);
|
|
|
+ connectionManager.setValidateAfterInactivity(2000);
|
|
|
+ RequestConfig requestConfig = RequestConfig.custom()
|
|
|
+ // 服务器返回数据(response)的时间,超时抛出read timeout
|
|
|
+ .setSocketTimeout(65000)
|
|
|
+ // 连接上服务器(握手成功)的时间,超时抛出connect timeout
|
|
|
+ .setConnectTimeout(5000)
|
|
|
+ // 从连接池中获取连接的超时时间,超时抛出ConnectionPoolTimeoutException
|
|
|
+ .setConnectionRequestTimeout(1000)
|
|
|
+ .build();
|
|
|
+ return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager).build();
|
|
|
}
|
|
|
}
|