@Inject public BrowseNodeEntityAdapter(final ComponentEntityAdapter componentEntityAdapter, final AssetEntityAdapter assetEntityAdapter, final BrowseNodeConfiguration configuration) { super(DB_CLASS); this.assetEntityAdapter = checkNotNull(assetEntityAdapter); this.componentEntityAdapter = checkNotNull(componentEntityAdapter); this.timeoutMillis = configuration.getQueryTimeout().toMillisI(); }
@Inject public SharedHttpClientConnectionManager( final List<SSLContextSelector> sslContextSelectors, @Named("${nexus.httpclient.connectionpool.size:-20}") final int connectionPoolSize, @Named("${nexus.httpclient.connectionpool.maxSize:-200}") final int connectionPoolMaxSize, @Named("${nexus.httpclient.connectionpool.idleTime:-30s}") final Time connectionPoolIdleTime, @Named("${nexus.httpclient.connectionpool.evictingDelayTime:-5s}") final Time connectionPoolEvictingDelayTime, @Named("${nexus.httpclient.connectionpool.validateAfterInactivityTime:-2s}") final Time connectionPoolValidateAfterInactivityTime, @Named("${nexus.httpclient.connectionpool.default.requestTimeout:-20s}") final Time defaultSocketTimeout) { super( new DefaultHttpClientConnectionOperator(createRegistry(sslContextSelectors), null, null), null, connectionPoolIdleTime.toMillis(), TimeUnit.MILLISECONDS ); setMaxTotal(connectionPoolMaxSize); log.debug("Connection pool max-size: {}", connectionPoolMaxSize); setDefaultMaxPerRoute(Math.min(connectionPoolSize, connectionPoolMaxSize)); log.debug("Connection pool size: {}", connectionPoolSize); this.connectionPoolIdleTime = checkNotNull(connectionPoolIdleTime); this.connectionPoolEvictingDelayTime = checkNotNull(connectionPoolEvictingDelayTime); setValidateAfterInactivity(connectionPoolValidateAfterInactivityTime.toMillisI()); log.debug("Connection pool idle-time: {}, evicting delay: {}, validate after inactivity: {}", connectionPoolIdleTime, connectionPoolEvictingDelayTime, connectionPoolValidateAfterInactivityTime); setDefaultSocketConfig(SocketConfig.custom().setSoTimeout(defaultSocketTimeout.toMillisI()).build()); log.debug("Default socket timeout {}", defaultSocketTimeout); }
@Override public void customize(final HttpClientPlan plan) { checkNotNull(plan); plan.setUserAgentBase(userAgentGenerator.generate()); plan.getClient().setKeepAliveStrategy(new NexusConnectionKeepAliveStrategy(keepAliveDuration.toMillis())); plan.getClient().setRetryHandler(new StandardHttpRequestRetryHandler(2, false)); plan.getConnection().setBufferSize(bufferSize.toBytesI()); plan.getRequest().setConnectionRequestTimeout(connectionRequestTimeout.toMillisI()); plan.getRequest().setCookieSpec(CookieSpecs.IGNORE_COOKIES); plan.getRequest().setExpectContinueEnabled(false); int requestTimeoutMillis = requestTimeout.toMillisI(); plan.getSocket().setSoTimeout(requestTimeoutMillis); plan.getRequest().setConnectTimeout(requestTimeoutMillis); plan.getRequest().setSocketTimeout(requestTimeoutMillis); } }
/** * Apply connection configuration to plan. */ private void apply(final ConnectionConfiguration connection, final HttpClientPlan plan) { if (connection.getTimeout() != null) { int timeout = connection.getTimeout().toMillisI(); plan.getSocket().setSoTimeout(timeout); plan.getRequest().setConnectTimeout(timeout); plan.getRequest().setSocketTimeout(timeout); } if (connection.getMaximumRetries() != null) { plan.getClient().setRetryHandler(new StandardHttpRequestRetryHandler(connection.getMaximumRetries(), false)); } if (connection.getUserAgentSuffix() != null) { checkState(plan.getUserAgentBase() != null, "Default User-Agent not set"); plan.setUserAgentSuffix(connection.getUserAgentSuffix()); } if (Boolean.TRUE.equals(connection.getUseTrustStore())) { plan.getAttributes().put(SSLContextSelector.USE_TRUST_STORE, Boolean.TRUE); } if (Boolean.TRUE.equals(connection.getEnableCircularRedirects())) { plan.getRequest().setCircularRedirectsAllowed(true); } if (Boolean.TRUE.equals(connection.getEnableCookies())) { plan.getRequest().setCookieSpec(CookieSpecs.DEFAULT); } }