50
50
public class HttpClientFactory {
51
51
52
52
private final CloseableHttpClient httpClient ;
53
- private final int TIMEOUT_THREE_HOURS = (int ) SECONDS .toMillis (60 * 60 * 3 );
53
+ private static final int TIMEOUT_THREE_HOURS = (int ) SECONDS .toMillis (60 * 60 * 3 );
54
+ private static final int TIMEOUT_TWO_MINUTES = (int ) SECONDS .toMillis (60 * 2 );
54
55
private final HttpClientConnectionManager gridClientConnectionManager =
55
56
getClientConnectionManager ();
56
57
57
58
public HttpClientFactory () {
58
- httpClient = createHttpClient (null );
59
+ this (TIMEOUT_TWO_MINUTES , TIMEOUT_THREE_HOURS );
60
+ }
61
+
62
+ public HttpClientFactory (int connectionTimeout , int socketTimeout ) {
63
+ httpClient = createHttpClient (null , connectionTimeout , socketTimeout );
59
64
}
60
65
61
66
private static HttpClientConnectionManager getClientConnectionManager () {
@@ -77,12 +82,18 @@ public HttpClient getHttpClient() {
77
82
}
78
83
79
84
public CloseableHttpClient createHttpClient (Credentials credentials ) {
85
+ return createHttpClient (credentials , 0 , 0 );
86
+ }
87
+
88
+ public CloseableHttpClient createHttpClient (Credentials credentials , int connectionTimeout , int socketTimeout ) {
89
+ SocketConfig socketConfig = createSocketConfig (socketTimeout );
90
+ RequestConfig requestConfig = createRequestConfig (connectionTimeout , socketTimeout );
91
+
80
92
HttpClientBuilder builder = HttpClientBuilder .create ()
81
93
.setConnectionManager (getClientConnectionManager ())
82
- .setDefaultSocketConfig (createSocketConfig ())
83
- .setDefaultSocketConfig (createSocketConfig ())
84
- .setRoutePlanner (createRoutePlanner ())
85
- .setDefaultRequestConfig (createRequestConfig ());
94
+ .setDefaultSocketConfig (createSocketConfig (socketTimeout ))
95
+ .setDefaultRequestConfig (createRequestConfig (connectionTimeout , socketTimeout ))
96
+ .setRoutePlanner (createRoutePlanner ());
86
97
87
98
if (credentials != null ) {
88
99
CredentialsProvider provider = new BasicCredentialsProvider ();
@@ -93,17 +104,11 @@ public CloseableHttpClient createHttpClient(Credentials credentials) {
93
104
return builder .build ();
94
105
}
95
106
96
- public HttpClient getGridHttpClient (int connection_timeout , int socket_timeout ) {
107
+ public HttpClient getGridHttpClient (int connectionTimeout , int socketTimeout ) {
97
108
gridClientConnectionManager .closeIdleConnections (100 , MILLISECONDS );
98
109
99
- SocketConfig socketConfig = SocketConfig .copy (createSocketConfig ())
100
- .setSoTimeout (socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS )
101
- .build ();
102
-
103
- RequestConfig requestConfig = RequestConfig .copy (createRequestConfig ())
104
- .setConnectTimeout (connection_timeout > 0 ? connection_timeout : 120 * 1000 )
105
- .setSocketTimeout (socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS )
106
- .build ();
110
+ SocketConfig socketConfig = createSocketConfig (socketTimeout );
111
+ RequestConfig requestConfig = createRequestConfig (connectionTimeout , socketTimeout );
107
112
108
113
return HttpClientBuilder .create ()
109
114
.setConnectionManager (gridClientConnectionManager )
@@ -114,18 +119,18 @@ public HttpClient getGridHttpClient(int connection_timeout, int socket_timeout)
114
119
.build ();
115
120
}
116
121
117
- private SocketConfig createSocketConfig () {
122
+ private SocketConfig createSocketConfig (int socketTimeout ) {
118
123
return SocketConfig .custom ()
119
124
.setSoReuseAddress (true )
120
- .setSoTimeout (TIMEOUT_THREE_HOURS )
125
+ .setSoTimeout (socketTimeout > 0 ? socketTimeout : TIMEOUT_THREE_HOURS )
121
126
.build ();
122
127
}
123
128
124
- private RequestConfig createRequestConfig () {
129
+ private RequestConfig createRequestConfig (int connectionTimeout , int socketTimeout ) {
125
130
return RequestConfig .custom ()
126
131
.setStaleConnectionCheckEnabled (true )
127
- .setConnectTimeout (120 * 1000 )
128
- .setSocketTimeout (TIMEOUT_THREE_HOURS )
132
+ .setConnectTimeout (connectionTimeout > 0 ? connectionTimeout : TIMEOUT_TWO_MINUTES )
133
+ .setSocketTimeout (socketTimeout > 0 ? socketTimeout : TIMEOUT_THREE_HOURS )
129
134
.build ();
130
135
}
131
136
0 commit comments