如果没有正文,是否需要关闭 JerseyClient (2.1.x) 响应的连接?
Do you need to close a Connection of a JerseyClient (2.1.x) Response, if it has no body?
在某些情况下,我们不会明确关闭响应(由 JerseyClient 生成)的连接,这有时会导致严重的问题。关于重构,我想知道,我们是否需要在没有正文的响应上调用 close()
。
到目前为止我知道:
response.close()
当然是关闭Connection,是幂等的
respnse.readEntity()
也关闭它
response.getStatus()
不 关闭连接
那么,空 响应又是什么?
在我看来,无论实体内容如何,始终调用 Response.close()
是非常明显的。
- 没有与通话相关的费用
- 引入一个不需要一直调用的
Response.close()
方法是一个非常违反直觉的设计。这种混淆会蔓延到您的代码中。
- Javadoc 似乎说空实体不需要它,但这不是很清楚。
- JAX-RS 实现可能会误解 spec 并要求调用
close()
。
- 您的资源服务器实现可能会更改,现在发送一个实体。那么你在客户端上有资源泄漏。
- 您已经提到似乎存在问题...
在某些情况下,我们不会明确关闭响应(由 JerseyClient 生成)的连接,这有时会导致严重的问题。关于重构,我想知道,我们是否需要在没有正文的响应上调用 close()
。
到目前为止我知道:
response.close()
当然是关闭Connection,是幂等的respnse.readEntity()
也关闭它response.getStatus()
不 关闭连接
那么,空 响应又是什么?
在我看来,无论实体内容如何,始终调用 Response.close()
是非常明显的。
- 没有与通话相关的费用
- 引入一个不需要一直调用的
Response.close()
方法是一个非常违反直觉的设计。这种混淆会蔓延到您的代码中。 - Javadoc 似乎说空实体不需要它,但这不是很清楚。
- JAX-RS 实现可能会误解 spec 并要求调用
close()
。 - 您的资源服务器实现可能会更改,现在发送一个实体。那么你在客户端上有资源泄漏。
- 您已经提到似乎存在问题...