blob: 39437e01a2ba3127513b2c20ca6c374492ce619a [file] [log] [blame]
= JAX-RS Filter
:index-group: Misc
:jbake-type: page
:jbake-status: published
== 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.
[note]
NOTE: É 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.
[source,java,numbered]
----
@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
}
}
----
Etapas para replicar:
1. Deploy do application e jaxrs-filter.war no diretório webapps.
2. 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
3. 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.