为了更好地理解我的问题,我有一个Java EE Web应用程序(作为UI /客户端),通过使用JAX-RS 2.0客户端API(Resteasy实现)的REST接口访问数据/业务逻辑服务。
目前,我每个请求注入一个新的JAXRS Client实例,使用一个RequestScoped CDI管理的bean,我的想法是客户端应用程序可能在每个请求中调用多个后端资源,并且我重用整个请求的相同JAXRS Client(尽管我在某个地方读到过这可能不正确,因为我可能为每个调用更改URI)。
JAXRS Client的文档似乎暗示客户端是一项潜在昂贵的操作,应用程序应限制它创建的连接数量。但它似乎与自己相矛盾,并建议在所有针对特定WebTarget的请求完成后关闭客户端。
客户端应用程序可能同时支持数千个用户,因此创建和销毁成千上万个“昂贵的客户端”似乎不是正确的方法,因此我认为共享客户端池更合适,但似乎没有任何关于如何实现这一点的信息。
所有示例都显示在请求期间创建一个新的客户端,并a)在之后关闭它或b)不关闭它,但并没有真正解释第二个请求会发生什么。
您能帮忙提供一些关于如何解决此问题或最佳实践的信息吗?
谢谢。
目前,我每个请求注入一个新的JAXRS Client实例,使用一个RequestScoped CDI管理的bean,我的想法是客户端应用程序可能在每个请求中调用多个后端资源,并且我重用整个请求的相同JAXRS Client(尽管我在某个地方读到过这可能不正确,因为我可能为每个调用更改URI)。
JAXRS Client的文档似乎暗示客户端是一项潜在昂贵的操作,应用程序应限制它创建的连接数量。但它似乎与自己相矛盾,并建议在所有针对特定WebTarget的请求完成后关闭客户端。
客户端应用程序可能同时支持数千个用户,因此创建和销毁成千上万个“昂贵的客户端”似乎不是正确的方法,因此我认为共享客户端池更合适,但似乎没有任何关于如何实现这一点的信息。
所有示例都显示在请求期间创建一个新的客户端,并a)在之后关闭它或b)不关闭它,但并没有真正解释第二个请求会发生什么。
您能帮忙提供一些关于如何解决此问题或最佳实践的信息吗?
谢谢。