@Provider
public class GenericServletFilter implements ContainerRequestFilter, ContainerResponseFilter {
/**
* Incoming (request) filter
*/
@Override
public void filter(ContainerRequestContext ctx) {
// your filter logic
}
/**
* Outbound (response) filter
*/
@Override
public void filter(ContainerRequestContext requestCtx,
ContainerResponseContext responseCtx) {
// your filter logic
}
}
JAX-RS Filter
ContainerRequestFilter e ContainerResponseFilter
Os filtros podem ser utilizados no seu projeto através da implementação das interfaces ContainerRequestFilter ou ContainerResponseFilter. Cada interface lida com um cenário de filtro separado - entrada ou saída - com parâmetros de função exclusivos para o método *filter * substituído. Note: a anotação @Provider na classe é necessária para executar o mapeamento do servlet independente do web.xml.
É possível fazer redirecionamentos usando o argumento ContextRequestFilter fornecido. O método abortWith(Response response) permite que o desenvolvedor altere o destino da solicitação conforme ele é recebido, de acordo com a lógica de filtro fornecida. O código incluído neste exemplo pode ser executado no servidor de aplicação TomEE. As etapas para replicar estão abaixo do snippet de código. |
Etapas para replicar:
-
Deploy do application e jaxrs-filter.war no diretório webapps.
-
Servidor de inicialização e vá para http://localhost:8080/jaxrs-filter/test
-
Aqui você deve ser redirecionado para uma página dizendo 401 Unauthorized
-
-
Anexe o parâmetro de consulta app_session_id=foobarbaz à mesma URL(http://localhost:8080/jaxrs-filter/test?app_session_id=foobarbaz)
-
Aqui você deve obter acesso. O filtro permite que a solicitação continue e você deve ver algumas informações HTTP básicas sobre a solicitação.
-