RemoteHttpClientTransport Class — spring-boot Architecture
Architecture documentation for the RemoteHttpClientTransport class in RemoteHttpClientTransport.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
buildpack/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/transport/RemoteHttpClientTransport.java lines 47–96
final class RemoteHttpClientTransport extends HttpClientTransport {
private static final Timeout SOCKET_TIMEOUT = Timeout.of(30, TimeUnit.MINUTES);
private RemoteHttpClientTransport(HttpClient client, HttpHost host) {
super(client, host);
}
static @Nullable RemoteHttpClientTransport createIfPossible(ResolvedDockerHost dockerHost) {
return createIfPossible(dockerHost, new SslContextFactory());
}
static @Nullable RemoteHttpClientTransport createIfPossible(ResolvedDockerHost dockerHost,
SslContextFactory sslContextFactory) {
if (!dockerHost.isRemote()) {
return null;
}
try {
return create(dockerHost, sslContextFactory, HttpHost.create(dockerHost.getAddress()));
}
catch (URISyntaxException ex) {
return null;
}
}
private static RemoteHttpClientTransport create(DockerHost host, SslContextFactory sslContextFactory,
HttpHost tcpHost) {
SocketConfig socketConfig = SocketConfig.copy(SocketConfig.DEFAULT).setSoTimeout(SOCKET_TIMEOUT).build();
PoolingHttpClientConnectionManagerBuilder connectionManagerBuilder = PoolingHttpClientConnectionManagerBuilder
.create()
.setDefaultSocketConfig(socketConfig);
if (host.isSecure()) {
connectionManagerBuilder.setTlsSocketStrategy(getTlsSocketStrategy(host, sslContextFactory));
}
HttpClientBuilder builder = HttpClients.custom();
builder.setConnectionManager(connectionManagerBuilder.build());
String scheme = host.isSecure() ? "https" : "http";
HttpHost httpHost = new HttpHost(scheme, tcpHost.getHostName(), tcpHost.getPort());
return new RemoteHttpClientTransport(builder.build(), httpHost);
}
private static TlsSocketStrategy getTlsSocketStrategy(DockerHost host, SslContextFactory sslContextFactory) {
String directory = host.getCertificatePath();
Assert.state(StringUtils.hasText(directory),
"Docker host TLS verification requires trust material location to be specified with certificate path");
SSLContext sslContext = sslContextFactory.forDirectory(directory);
return new DefaultClientTlsStrategy(sslContext);
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free