我开始使用Jersey 2.1作为客户端,以便向其他人提供REST调用。
我一直在完成这些教程,我想我了解如何打开连接,并调用Web服务。
我的问题是,由于我的服务将持续存在,并且必须在事件发生时处理事件,我该如何管理和维护会话连接?
我一直试图了解我是否需要:
答案 0 :(得分: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。
答案 1 :(得分:1)
基于“this thread on MSDN”,关闭响应连接是从客户端角度维护应用程序性能的最佳实践之一。另外在另一方面,它也有助于关闭客户端连接。
要点是:
示例:
client.setConnectTimeout(10000); //以毫秒为单位。
client.setReadTimeout(60000); //以毫秒为单位
希望这有帮助。