Java 所有服务的Resteasy客户端注册筛选器
可以在RestEasy中注册一个适用于任何实例的过滤器吗?今天,我有很多使用一个客户机的服务 例如:Java 所有服务的Resteasy客户端注册筛选器,java,resteasy,Java,Resteasy,可以在RestEasy中注册一个适用于任何实例的过滤器吗?今天,我有很多使用一个客户机的服务 例如: Client client = ClientBuilder.newClient(); WebTarget target = client.target(ulrBase); ResteasyWebTarget rtarget = (ResteasyWebTarget) target; this.servico = rtarget.proxy(UsuarioServiceClient.c
Client client = ClientBuilder.newClient();
WebTarget target = client.target(ulrBase);
ResteasyWebTarget rtarget = (ResteasyWebTarget) target;
this.servico = rtarget.proxy(UsuarioServiceClient.class);
但现在我必须通过一个标题道具,所以我创建了这个:
公共类AuthHeadersRequestFilter实现ClientRequestFilter{
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
requestContext.getHeaders().add("xx-Authorization", ((IntegraUI) UI.getCurrent()).getSessionToken());
}
}
但对于所有客户,我需要插入以下行:
client.register(new AuthHeadersRequestFilter());
那么,我可以在我创建的每个地方配置一个客户端吗?这个过滤器会自动注册吗
tks后退一步
你在玩多少个实例
实例是很重的对象,您应该只有少量的实例,并在可能的情况下重用它们。请查看:
Client
s是管理客户端通信基础结构的重型对象。初始化和处置Client
实例可能是一项相当昂贵的操作。因此建议在应用程序中只构造少量的Client
实例。Client
实例ces在处置前必须正确关闭,以避免资源泄漏
注册过滤器和拦截器
RESTEasy不会在上自动注册筛选器和拦截器。当筛选器或拦截器使用注释时,会在服务器端发生这种情况。但在客户端,必须手动注册筛选器和拦截器
不必在实例中注册过滤器和拦截器,您可以在实例中注册它们并使用它们创建实例:
Configuration config=new Configuration();
config.register(MyClientResponseFilter.class);
config.register(新的AnotherClientFilter());
Client Client=ClientBuilder.newClient(config);
当创建多个具有相同配置的客户端时,它可能很有用