使用Spring Rest Template时,HttpConnection的默认保持活动时间

时间:2016-02-03 18:37:43

标签: java spring httpurlconnection resttemplate

我想知道在通过Spring rest Template创建新连接之前,HttpConnection在不活动时保持活动多长时间。我查看了默认的连接超时和读取超时参数,但我相信这些参数在连接超时时由于某些故障等原因未建立连接时使用。

我正在寻找的是,如果没有活动(或)处于非活动状态,连接会保持多长时间,以及如何通过Spring Rest Template(或)基础机制来配置它。

1 个答案:

答案 0 :(得分:6)

默认情况下,RestTemplate使用SimpleClientHttpRequestFactory,而HttpClient依次打开Java HttpURLConnection,默认情况下支持在某些条件下保持活动状态。如果您想要更好地控制连接的处理方式,可以使用HttpComponentsClientHttpRequestFactory创建restTemplate,它使用Apache @Bean RestTemplate restTemplate(SimpleClientHttpRequestFactory factory) { return new RestTemplate(factory); } 库,例如:

ObjectMapper mapper = new ObjectMapper();
ObjectNode combinedQuery = mapper.createObjectNode();
combinedQuery.putObject("search")
  .putObject("query")
    .putArray("queries")
      .addObject()
        .putObject("or-query")
          .putArray("queries")
            .add(mapper.readTree(query))
            .addObject()
              .putObject("properties-fragment-query")
                .putObject("term-query")
                  .putArray("text")
                    .add(parameters.getQuery());
combinedQuery.with("search")
  .setAll((ObjectNode) mapper.readTree(options));
queryMgr.newRawCombinedQueryDefinition( new JacksonHandle(combinedQuery));

您还可以在此处看到一些讨论:

How to Reuse HttpUrlConnection?

Persistent HttpURLConnection in Java

How to use RestTemplate efficiently in Multithreaded environment?