App.java
package com.training.jax_rs_2._client_side_filters;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
public class App {
public static void main(String[] args) {
new App().execute();
}
private void execute() {
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() {
@Override
public void run() {
runClient();
}
});
executorService.shutdown();
}
private void runClient() {
Client client = ClientBuilder.newClient();
client.register(RequestFilter.class);
client.register(ResponseFilter.class);
// WebTarget webTarget = client.target("http://localhost:8080/jax_rs_2.0_server_side_filters/rest");
WebTarget webTarget = client.
target("http://localhost:8080").
path("jax_rs_2.0_server_side_filters").
path("rest");
Response response = webTarget.request().get();
System.out.println(response);
}
}
ResponseFilter.java
package com.training.jax_rs_2._client_side_filters;
import java.io.IOException;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientResponseContext;
import javax.ws.rs.client.ClientResponseFilter;
public class ResponseFilter implements ClientResponseFilter {
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
System.out.println("ClientResponseFilter");
}
}
RequestFilter.java
package com.training.jax_rs_2._client_side_filters;
import java.io.IOException;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
public class RequestFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
System.out.println("ClientRequestFilter");
requestContext.getHeaders().add("id", "123");
}
}
pom.xml
...
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.19</version>
</dependency>
...