1

我开始使用我想用作客户端的 Jersey 2.1,以对其他人的 Web 服务进行 REST 调用。

我一直在学习这些教程,并且我想我了解如何打开连接并调用 Web 服务。

我的问题是,由于我的服务将持续存在,并且必须在事件发生时对其进行处理,我该如何管理和维护会话连接?

我一直试图了解是否需要:

  1. 关闭连接?这似乎没有讨论。那么拨打电话后隐式自动关闭吗?
  2. 如果没有自动关闭,我可以检查状态以查看连接是否仍然有效?
4

2 回答 2

5

为每个请求打开底层连接,并在收到响应并处理实体(读取实体)后关闭。

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。

于 2013-08-02T11:34:05.287 回答
1

基于“如何有效地使用 Jersey 客户端”,关闭响应连接是从客户端角度保持应用程序性能的最佳实践之一。另外值得注意的是,它也有助于关闭客户端连接。

要点是:

  • 在收集/读取客户端代码中所需的所有信息后关闭响应。
  • 并在您的客户端服务类中完成所有 CRUD 操作后关闭客户端连接。这在您在服务调用期间遇到某种类型的连接/服务端点相关异常的情况下非常重要。
  • 还值得一提的是连接和读取超时。

例子:

client.setConnectTimeout(10000);// 以毫秒为单位。

client.setReadTimeout(60000); // 以毫秒为单位。

希望这可以帮助。

于 2016-05-22T03:09:11.497 回答