在某些情况下,我们不会显式关闭响应(由 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/