为我的问题提供一点背景......
我有一个Java EE Web应用程序(作为UI /客户端),它使用JAX-RS 2.0客户端API(Resteasy实现)通过REST接口访问数据/业务逻辑服务.
目前,我使用RequestScoped CDI托管bean为每个请求注入一个新的JAXRS客户端实例,其思想是客户端应用程序可以为每个请求调用多个后端资源,并且我为整个请求重用相同的JAXRS客户端(尽管我在某处读到这可能不是是正确的,因为我可能会更改每个调用的URI)
JAXRS Client的文档似乎表明客户端是一个可能很昂贵的操作,应用程序应该限制它创建的连接数量.它似乎也与自己相矛盾,并建议在完成对特定WebTarget的所有请求后关闭客户端.
客户端应用程序可能会支持数千个并发用户,因此创建和销毁数千个"昂贵客户端"似乎不是正确的方法,所以我认为共享客户端池更合适但似乎没有任何关于如何这应该实现.
所有示例似乎都显示为请求创建了一个新客户端,a)在关闭之后关闭它,或者b)没有关闭它,但没有真正解释第二个请求发生了什么.
您能否提供一些答案,说明您认为如何解决这个问题,或者提供有关此方法的最佳实践的信息.
谢谢.
我有一个看起来如下的对象
class MyObject {
String type;
List<String> subTypes;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能,给定MyObject的列表,使用Java 8流来过滤类型和子类型?
到目前为止我有
myObjects.stream()
.filter(t -> t.getType().equals(someotherType)
.collect(Collections.toList());
Run Code Online (Sandbox Code Playgroud)
但在此范围内,我还希望对每个子类型上的另一个过滤器过滤特定子类型上的过滤器.我无法弄清楚如何做到这一点.
一个例子是
myObject { type: A, subTypes [ { X, Y, Z } ] }
myObject { type: B, subTypes [ { W, X, Y } ] }
myObject { type: B, subTypes [ { W, X, Z } ] }
myObject { type: C, subTypes [ { W, X, Z } ] }
Run Code Online (Sandbox Code Playgroud)
我会传入matchType B和subType Z,所以我希望得到一个结果 - > myObject type …