Jersey 2.22:我什么时候应该关闭 Client 实例?

Jersey 2.22: When should I close the Client instance?

在我的 MVC Web 应用程序中,我的服务依赖 Client 实例来创建对 Web 服务的 HTTP 请求。根据 Jersey 文档,初始化和销毁​​客户端对象非常昂贵,所以我只是创建了一个单例 Client 实例:

private static final Client client = ClientBuilder.newClient();

我的问题是,我应该什么时候关闭这个实例?因为似乎我唯一不会使用 Client 的时间是应用程序终止时。

如果您以某种方式将其定义为 Singleton,那么您实际上并不需要 - 它与您的应用程序一起生死存亡。有时,您可能会为特定的短期或中期需求定义一个 Client 实例(假设您有一个与多个远程端点通信的应用程序,这些端点在应用程序的生命周期中会发生变化)。在这些情况下,最好显式关闭 Client 'at some point' 以表明它不是为了重用。棘手的部分可能是定义 'at some point' 的真正含义。