如何调用类扩展客户端RequestFilter进行客户端过滤

问题描述 投票:0回答:2

我有一个实现客户端过滤的ClientRequestFilter的类。

import java.io.IOException;

import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.ext.Provider;

import javax.ws.rs.client.ClientRequestFilter;

import org.glassfish.jersey.server.ContainerRequest;

@Provider
public class checkRequestFilter implements ClientRequestFilter{

    @Override
    public void filter(ClientRequestContext clientRequestContext) throws IOException {
        System.out.println("I am in checkResponseFilter");
    }
}

但我不知道该怎么做才能调用这个过滤器?

我们是否需要在web.xml中添加一些servlets?

java rest filter jersey jax-ws
2个回答
6
投票

客户端RequestFilter在客户端发挥作用。因此,你不必把它添加到servlet中,而是添加到客户端(假设你使用Jersey客户端API)。

当你建立你的客户端时,你要做这样的事情。

Client client = ClientBuilder.newClient();
client.register(new CheckRequestFilter()); // your filter
// more filters
WebTarget target = client.target(....

你可以在这里找到一个很好的完整的例子:https:/jersey.java.netapidocs2.9jerseyorgglassfishjerseyclientauthenticationHttpAuthenticationFeature.html。

如果你的意思是在服务器端使用过滤器,你需要使用ContainerRequestFilter。


0
投票

另一个选项来实现这个目的。

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;

cb = ClientBuilder.newBuilder();
client = cb.register(new checkRequestFilter()).build();

还要注意的是,这是一个客户端的过滤器,所以你试图过滤一个请求(无应答),您发送的(因此您在客户端注册过滤器)。

© www.soinside.com 2019 - 2024. All rights reserved.