我开始使用我想用作客户端的 Jersey 2.1,以对其他人的 Web 服务进行 REST 调用。
我一直在学习这些教程,并且我想我了解如何打开连接并调用 Web 服务。
我的问题是,由于我的服务将持续存在,并且必须在事件发生时对其进行处理,我该如何管理和维护会话连接?
我一直试图了解是否需要:
- 关闭连接?这似乎没有讨论。那么拨打电话后隐式自动关闭吗?
- 如果没有自动关闭,我可以检查状态以查看连接是否仍然有效?
我开始使用我想用作客户端的 Jersey 2.1,以对其他人的 Web 服务进行 REST 调用。
我一直在学习这些教程,并且我想我了解如何打开连接并调用 Web 服务。
我的问题是,由于我的服务将持续存在,并且必须在事件发生时对其进行处理,我该如何管理和维护会话连接?
我一直试图了解是否需要:
为每个请求打开底层连接,并在收到响应并处理实体(读取实体)后关闭。
final WebTarget target = ... some web target
Response response = target.path("resource").request().get();
System.out.println("Connection is still open.");
System.out.println("string response: " + response.readEntity(String.class));
System.out.println("Now the connection is closed.");
如果不读取实体,则需要通过 response.close() 手动关闭响应。此外,如果实体被读入输入流(通过 response.readEntity(InputStream.class)),连接将保持打开状态,直到您完成从 InputStream 的读取。在这种情况下,应在从 InputStream 读取结束时手动关闭 InputStream 或 Response。
基于“如何有效地使用 Jersey 客户端”,关闭响应连接是从客户端角度保持应用程序性能的最佳实践之一。另外值得注意的是,它也有助于关闭客户端连接。
要点是:
例子:
client.setConnectTimeout(10000);// 以毫秒为单位。
client.setReadTimeout(60000); // 以毫秒为单位。
希望这可以帮助。