in asterixdb-jdbc/asterix-jdbc-driver/src/main/java/org/apache/asterix/jdbc/ADBProtocol.java [106:155]
public ADBProtocol(String host, int port, Map<ADBDriverProperty, Object> params, ADBDriverContext driverContext,
int loginTimeoutSeconds) throws SQLException {
super(driverContext, params);
boolean sslEnabled = (Boolean) ADBDriverProperty.Common.SSL.fetchPropertyValue(params);
URI queryEndpoint = createEndpointUri(sslEnabled, host, port, QUERY_SERVICE_ENDPOINT_PATH,
driverContext.getErrorReporter());
URI queryResultEndpoint =
createEndpointUri(sslEnabled, host, port, QUERY_RESULT_ENDPOINT_PATH, driverContext.getErrorReporter());
URI activeRequestsEndpoint = createEndpointUri(sslEnabled, host, port, getActiveRequestsEndpointPath(params),
driverContext.getErrorReporter());
PoolingHttpClientConnectionManager httpConnectionManager = new PoolingHttpClientConnectionManager();
int maxConnections = Math.max(16, Runtime.getRuntime().availableProcessors());
httpConnectionManager.setDefaultMaxPerRoute(maxConnections);
httpConnectionManager.setMaxTotal(maxConnections);
SocketConfig.Builder socketConfigBuilder = null;
Number socketTimeoutMillis = (Number) ADBDriverProperty.Common.SOCKET_TIMEOUT.fetchPropertyValue(params);
if (socketTimeoutMillis != null) {
socketConfigBuilder = SocketConfig.custom();
socketConfigBuilder.setSoTimeout(socketTimeoutMillis.intValue());
}
if (socketConfigBuilder != null) {
httpConnectionManager.setDefaultSocketConfig(socketConfigBuilder.build());
}
RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
Number connectTimeoutMillis = (Number) ADBDriverProperty.Common.CONNECT_TIMEOUT.fetchPropertyValue(params);
int connectTimeout = Math.max(0, connectTimeoutMillis != null ? connectTimeoutMillis.intValue()
: (int) TimeUnit.SECONDS.toMillis(loginTimeoutSeconds));
requestConfigBuilder.setConnectTimeout(connectTimeout);
if (socketTimeoutMillis != null) {
requestConfigBuilder.setSocketTimeout(socketTimeoutMillis.intValue());
}
requestConfigBuilder.setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT);
RequestConfig requestConfig = requestConfigBuilder.build();
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
httpClientBuilder.setConnectionManager(httpConnectionManager);
httpClientBuilder.setConnectionManagerShared(true);
httpClientBuilder.setDefaultRequestConfig(requestConfig);
if (user != null) {
String password = (String) ADBDriverProperty.Common.PASSWORD.fetchPropertyValue(params);
httpClientBuilder.setDefaultCredentialsProvider(createCredentialsProvider(user, password));
}
this.queryEndpoint = queryEndpoint;
this.queryResultEndpoint = queryResultEndpoint;
this.activeRequestsEndpoint = activeRequestsEndpoint;
this.httpConnectionManager = httpConnectionManager;
this.httpClient = httpClientBuilder.build();
this.httpClientContext = createHttpClientContext(queryEndpoint);
}