在某些情况下,我们没有明确关闭Response(由JerseyClient制造)的连接,这有时会导致严重的问题。关于重构,我想知道,是否需要在没有主体的Response上调用close()



我到目前为止知道:


response.close()当然会关闭连接并且是幂等的
respnse.readEntity()也将其关闭
response.getStatus()不关闭连接


那么,关于空响应又是什么呢?

最佳答案

在我看来,无论实体内容如何,​​始终调用Response.close()更好。


没有与通话相关的费用
引入Response.close()方法并不是一个很直观的设计,它不需要一直被调用。这种混乱蔓延到您的代码中。
Javadoc似乎说空实体不需要它,但这不是很清楚。
JAX-RS实现可能会误解spec并要求调用close()
资源的服务器实现可能会更改,现在会发送一个实体。然后,客户端上就会发生资源泄漏。
您已经提到似乎存在问题...

10-07 19:24
查看更多