当前位置: 首页 > 知识库问答 >
问题:

CloseableHttpClient连接池关闭

程枫
2023-03-14

当我使用CloseableHttpClient和do Execute方法时,它在第一次正常工作,但之后从未成功。它将引发表示“连接池关闭”的异常

有人说是因为我还没有关闭客户端有人说是httpClient 4.3中的bug

我的项目不存在上述问题,但仍然无法正常工作

CloseableHttpClient httpClient = HttpClientManagerUtils.getHttpClient();

    try {
        HttpResponse response = httpClient.execute(httpPost);
        if (response.getStatusLine().getStatusCode() == 200) {
            log.info("调用网易接口成功,url:{},param:{}", url, JSONObject.toJSON(param));
            HttpEntity entity = response.getEntity();
            if (entity.getContentType().toString().contains("application/json")) {
                String responseString = EntityUtils.toString(entity, "utf-8");
                return JSON.toJavaObject(JSON.parseObject(responseString), NimResult.class);
            }
        } else {
            throw new RuntimeException("http code : " + response.getStatusLine().getStatusCode() + ", exception:" +
                    EntityUtils.toString(response.getEntity()));
        }
    } catch (Exception e) {
        log.error("调用网易接口异常,url:{},param:{}", url, JSONObject.toJSON(param), e);
    } finally {
        httpClient.close();
    }

共有1个答案

颜奇希
2023-03-14

我不应该关闭客户端,而是应该关闭响应。客户端将自动关闭,因为httpclient 4.4我已经解决了:)

 类似资料:
  • 我正在Java中运行Apache HTTP POST请求,每当我超过1300个请求时,就会出现以下错误,我需要发出更多的请求,大约40k,我可以做些什么来纠正相同的错误?

  • 我正在使用HttpClient v4.5.5 我有一个如下: 然后我使用超文本传输协议客户端如下: 通过定期调用(每隔几分钟) 偶尔我会出错 ,据我所知,这种情况要么发生在旧的HttpClient版本上,要么发生在您关闭HttpClient时。我没有这样做。所以我不明白为什么会出现这个错误。它会恢复,但有这样的异常是个问题。

  • 我有一个带有数据库连接池的grails/groovy web应用程序。设置如下所示: 我使用java melody进行诊断和监控,并注意到一些奇怪的行为。例如,当执行查询数据库的作业时,连接可以超越maxActive属性。为什么这是可能的? 我需要显式关闭Grails连接吗?该作业调用一个服务方法,该方法通过withCriteria Grails调用简单地执行DB查询,如: 似乎每次运行这个程序,

  • 我正在使用DBCP连接池,并创建了一个MBean来在Jconsole中显示连接池的统计信息。我观察到的是,即使应用程序上没有活动(意味着没有页面点击等),连接池统计数据也会显示活动连接。 我们在上面看到的16个虚拟连接并没有降到零。我不知道为什么?有人能解释一下吗? 谢谢

  • 我对CloseableHttpClient管理的连接有问题。Spring服务管理纽约连接: 当执行不成功时,我的setPayment方法最多调用3次。有时在第一次执行后,我的方法挂起而没有响应。欢迎任何建议。

  • 问题内容: 我们使用JDBC的标准代码部分是… 问题1:使用连接池时,是否应该在最后关闭连接?如果是这样,合并的目的就不会丢失吗?如果不是,那么DataSource如何知道何时释放Connection的特定实例并可以重用?我对此感到有些困惑,任何指针都表示赞赏。 问题2:以下方法是否接近标准?看起来像是尝试从池中获取连接,并且如果无法建立DataSource,请使用老式的DriverManager