Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 所有服务的Resteasy客户端注册筛选器_Java_Resteasy - Fatal编程技术网

Java 所有服务的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

可以在RestEasy中注册一个适用于任何实例的过滤器吗?今天,我有很多使用一个客户机的服务

例如:

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);
当创建多个具有相同配置的客户端时,它可能很有用