java - 如果 JerseyClient (2.1.x) 响应没有正文,是否需要关闭它的连接?

标签 java jersey connection

在某些情况下,我们不会显式关闭响应(由 JerseyClient 创建)的连接,这有时会导致严重的问题。在重构时,我想知道我们是否需要对没有主体的响应调用 close()

<小时/>

到目前为止我知道:

  • response.close() 当然会关闭连接并且是幂等的
  • respnse.readEntity() 也会关闭它
  • response.getStatus() 确实关闭连接

那么,响应又是什么呢?

最佳答案

在我看来,很明显,最好总是调用 Response.close()无论实体内容如何。

  • 通话不产生任何费用
  • 引入Response.close()是一个非常反直觉的设计。不需要每次都调用的方法。这种困惑会渗透到您的代码中。
  • Javadoc 似乎说空实体不需要它,但这还不太清楚。
  • JAX-RS 实现可能会误解 spec并要求close()被称为。
  • 您的资源服务器实现可能会发生变化,现在会发送一个实体。那么客户端就会出现资源泄漏。
  • 您已经提到似乎存在问题...

关于java - 如果 JerseyClient (2.1.x) 响应没有正文,是否需要关闭它的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277360/

相关文章:

java - Eclipse android项目不生成jar

java - 两个具有相似 @Path 注释的资源类上的 Jersey 404

apache - 如何在 Jersey、Apache Wink 和 JBoss RESTEasy 之间进行选择?

mysql - 什么会导致所有 MySQL 连接休眠?

mysql - 远程 MySQL 连接速度慢

azure - 无法使用 Azure 混合连接连接到 SQL Server Analysis Services

java - 如何初始化驱动程序对象以便所有类都可以使用它

java - 如何使用具有有界类型参数的抽象工厂模式?

Java JAXB 从 XML 中解码空值

java - Jersey 2.x 和 Tomcat8 返回 NullPointerException,HTTP 状态 500