|
24 | 24 | import org.eclipse.jetty.client.InputStreamResponseListener; |
25 | 25 | import org.eclipse.jetty.client.Response; |
26 | 26 | import org.eclipse.jetty.client.Socks4Proxy; |
27 | | -import org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP; |
| 27 | +import org.eclipse.jetty.client.transport.HttpClientConnectionFactory; |
| 28 | +import org.eclipse.jetty.client.transport.HttpClientTransportDynamic; |
28 | 29 | import org.eclipse.jetty.client.transport.HttpDestination; |
29 | 30 | import org.eclipse.jetty.client.transport.HttpExchange; |
30 | 31 | import org.eclipse.jetty.client.transport.HttpRequest; |
31 | 32 | import org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP; |
32 | 33 | import org.eclipse.jetty.http.HttpCookieStore; |
33 | 34 | import org.eclipse.jetty.http2.client.HTTP2Client; |
34 | | -import org.eclipse.jetty.http2.client.transport.HttpClientTransportOverHTTP2; |
| 35 | +import org.eclipse.jetty.http2.client.transport.ClientConnectionFactoryOverHTTP2; |
35 | 36 | import org.eclipse.jetty.io.ArrayByteBufferPool; |
| 37 | +import org.eclipse.jetty.io.ClientConnectionFactory; |
36 | 38 | import org.eclipse.jetty.io.ClientConnector; |
37 | 39 | import org.eclipse.jetty.util.component.LifeCycle; |
38 | 40 | import org.eclipse.jetty.util.ssl.SslContextFactory; |
@@ -179,22 +181,27 @@ public JettyHttpClient( |
179 | 181 | sslContextFactory.setTrustAll(true); |
180 | 182 | } |
181 | 183 |
|
182 | | - HttpClientTransport transport; |
| 184 | + ClientConnector clientConnector = new ClientConnector(); |
| 185 | + clientConnector.setSelectors(config.getSelectorCount()); |
| 186 | + clientConnector.setSslContextFactory(sslContextFactory); |
| 187 | + |
| 188 | + ImmutableList.Builder<ClientConnectionFactory.Info> protocols = ImmutableList.builder(); |
183 | 189 | if (config.isHttp2Enabled()) { |
184 | | - HTTP2Client client = new HTTP2Client(); |
| 190 | + HTTP2Client client = new HTTP2Client(clientConnector); |
185 | 191 | client.setInitialSessionRecvWindow(toIntExact(config.getHttp2InitialSessionReceiveWindowSize().toBytes())); |
186 | 192 | client.setInitialStreamRecvWindow(toIntExact(config.getHttp2InitialStreamReceiveWindowSize().toBytes())); |
187 | 193 | client.setInputBufferSize(toIntExact(config.getHttp2InputBufferSize().toBytes())); |
188 | | - client.setSelectors(config.getSelectorCount()); |
189 | | - transport = new HttpClientTransportOverHTTP2(client); |
190 | | - } |
191 | | - else { |
192 | | - ClientConnector clientConnector = new ClientConnector(); |
193 | | - clientConnector.setSelectors(config.getSelectorCount()); |
194 | | - clientConnector.setSslContextFactory(sslContextFactory); |
195 | | - transport = new HttpClientTransportOverHTTP(clientConnector); |
| 194 | + client.setStreamIdleTimeout(idleTimeoutMillis); |
| 195 | + protocols.add(new ClientConnectionFactoryOverHTTP2.HTTP2(client)); |
196 | 196 | } |
197 | 197 |
|
| 198 | + protocols.add(HttpClientConnectionFactory.HTTP11); |
| 199 | + |
| 200 | + // The order of the protocols indicates the client's preference. |
| 201 | + // The first is the most preferred, the last is the least preferred, but |
| 202 | + // the protocol version to use can be explicitly specified in the request. |
| 203 | + HttpClientTransport transport = new HttpClientTransportDynamic(clientConnector, protocols.build().toArray(new ClientConnectionFactory.Info[0])); |
| 204 | + |
198 | 205 | httpClient = new AuthorizationPreservingHttpClient(transport); |
199 | 206 |
|
200 | 207 | // request and response buffer size |
|
0 commit comments