jax example chrome java rest tomcat jax-rs resteasy

java - example - Match Filter con método específico a través de NameBinding en RESTeasy



resteasy maven (1)

Estoy intentando especificar un filtro de ajuste previo que solo esté asociado a algunas de mis llamadas API, siguiendo lo que sugiere la documentación RESTeasy . Aquí está mi código:

Enlace de nombre:

@NameBinding public @interface ValidateFoo {}

Recurso:

@Path("/foo/bar") @Produces(MediaType.APPLICATION_JSON) public class FooBar { @GET @ValidateFoo public Object doStuff() { //do stuff } @POST public Object doAnotherStuff() { //do another stuff } }

Filtrar:

@ValidateFoo @Provider @PreMatching public class FooValidation implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext reqContext) throws IOException { //validate stuff } }

El problema es que el filtro FooValidation se ejecuta antes de cada llamada a un método (por ejemplo: antes de GET y POSTs a / foo / bar), no solo los anotados con @ValidateFoo (me parece un error). Si @Provider anotación @Provider del filtro, no se ejecutará antes de ninguna llamada (como se esperaba).

Estoy viendo este comportamiento de manera consistente, ya sea usando WebLogic o Tomcat. Mi administración de dependencias se realiza a través de Maven, y la versión RESTeasy es 3.0-beta-3.

¿Alguien experimenta / experimentó el mismo comportamiento? He visto a otro usuario con un problema similar en los foros de JBoss , sin suerte hasta el momento.

ACTUALIZACIÓN: Todavía experimenta el mismo problema con RESTeasy 3.0.1-Final.


Tuve un problema similar. Para mí, la solución fue agregar la siguiente configuración de anotación (a @ValidateFoo):

@Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(value = RetentionPolicy.RUNTIME) @NameBinding