首页 > 解决方案 > 使用 HttpRequestInterceptor 和 HttpResponseInterceptor 时出现 ConnectionPoolTimeoutException

问题描述

当我使用没有拦截器的连接时,一切正常:

RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(socketTimeout)
                .setConnectTimeout(connectTimeout)
                .setConnectionRequestTimeout(connectionRequestTimeout)
                .build();

        return HttpClientBuilder.create()                
                .setDefaultRequestConfig(requestConfig)
                .addInterceptorFirst(new RemoveSoapHeadersInterceptor())                
                .setSSLSocketFactory(sslConnectionSocketFactory())
                .setMaxConnPerRoute(maxConnPerRoute)
                .disableCookieManagement()
                .setMaxConnTotal(maxHTTPConnectionsTotal)
                .setDefaultHeaders(headers).build();
    }

但是当我添加拦截器时,一段时间后我收到“超时等待来自池的连接;嵌套异常是 org.apache.http.conn.ConnectionPoolTimeoutException”我应该使用任何手动关闭连接,或者异常的原因是什么?

RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(socketTimeout)
                .setConnectTimeout(connectTimeout)
                .setConnectionRequestTimeout(connectionRequestTimeout)
                .build();

        return HttpClientBuilder.create()
                .addInterceptorLast(httpRequestInterceptor)
                .addInterceptorLast(httpResponseInterceptor)
                .setRetryHandler(httpExceptionHandler)
                .setDefaultRequestConfig(requestConfig)
                .addInterceptorFirst(new RemoveSoapHeadersInterceptor())                
                .setSSLSocketFactory(sslConnectionSocketFactory())
                .setMaxConnPerRoute(maxConnPerRoute)
                .disableCookieManagement()
                .setMaxConnTotal(maxHTTPConnectionsTotal)
                .setDefaultHeaders(headers).build();
    }

标签: javaspringspring-boothttp

解决方案


推荐阅读