【问题标题】:Jersey 2 client not closing connection immediatelyJersey 2 客户端未立即关闭连接
【发布时间】:2016-11-03 17:16:29
【问题描述】:

client.close();没有立即关闭与端点的连接。 netstat 显示在 client.close 调用完成后连接打开了几秒钟。 有没有办法立即强制关闭连接?

【问题讨论】:

  • 我认为Jersey客户端使用HttpURLConnection,我认为HttpURLConnection默认使用持久连接。你试过http.keepAlive=false吗?

标签: java jersey-2.0


【解决方案1】:

这可能是由于定义了close() 调用和真正关闭连接之间的时间的 SO_LINGER 值的设置。

有关此套接字选项的更多信息可以在this SO answer 中找到,在Java 中可以使用Socket.setSOLinger() 设置值。

不知道能不能给Jersey设置这个值,至少我在org.glassfish.jersey.client.ClientProperties找不到东西

【讨论】:

  • SO_LINGER 没有“定义close() 调用和真正关闭连接之间的时间”。它定义了 in close() 调用等待刷新待处理数据的时间。它通常是关闭,事实上,我从未见过将它设置为正值的生产代码。这个问题的真正解释是@BrettKail 给出的:HTTP keepalive。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多