【问题标题】:Default keep-alive time for a HttpConnection when using Spring Rest Template使用 Spring Rest 模板时 HttpConnection 的默认保持活动时间
【发布时间】:2016-05-13 02:53:55
【问题描述】:

在通过 Spring REST 模板创建新连接之前,我想知道 HttpConnection 在不活动时保持活动多长时间。我查看了默认的 Connection Time-Out 和 Read Time-Out 参数,但我相信这些是在由于某些故障等原因未建立连接时的连接超时上下文中使用的。

我正在寻找的是,如果没有活动(或)不活动,连接保持活动多长时间,以及如何通过 Spring Rest 模板(或)底层机制进行配置。

【问题讨论】:

  • 您是否打算在通话之间保持 http 连接打开?
  • 我试图了解默认行为是什么,连接在不活动时可用多长时间

标签: java spring httpurlconnection resttemplate


【解决方案1】:

默认情况下RestTemplate 使用SimpleClientHttpRequestFactory 反过来打开Java 的HttpURLConnection 在某些情况下默认支持keep-alive。如果您想更好地控制连接的处理方式,您可以使用 HttpComponentsClientHttpRequestFactory 创建 restTemplate,它使用 Apache HttpClient 库,例如:

@Bean
RestTemplate restTemplate(SimpleClientHttpRequestFactory factory) {
   return new RestTemplate(factory);
}

你也可以在这里看到一些讨论:

How to Reuse HttpUrlConnection?

Persistent HttpURLConnection in Java

How to use RestTemplate efficiently in Multithreaded environment?

【讨论】:

  • 感谢您的回答,它帮助我继续前进,最后一个问题我正在使用带有 SimpleClientHttpRequestFactory 的普通 RestTemplate,基本上第一个请求通过 (RestTemplate) 连接到另一个 REST 服务大约需要 5 秒,我看到 java.net.UrlConnection.connect() 正在占用,但后续调用很快。如果服务器空闲一分钟,延迟再次发生,这是默认行为吗?当服务器空闲时,池连接会消除这种延迟吗?
  • 通常连接不到 5 秒。可能是网络问题或目的地休息服务有问题。
  • 我正在搜索如何在成功登录时重用会话 cookie,并且使用 HttpComponentsClientHttpRequestFactory 效果很好(无需为每个新请求添加 cookie)
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2020-09-19
  • 2017-12-29
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多