Sto tentando di specificare un filtro di pre-corrispondenza che è associato solo ad alcune delle mie chiamate API, seguendo ciò che suggerisce RESTeasy documentation. Ecco ciò che il mio codice è simile: vincolanteFiltro corrispondenza con metodo specifico tramite NameBinding su RESTeasy
Nome:
@NameBinding
public @interface ValidateFoo {}
risorse:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
Filtro:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
Il problema è: il filtro FooValidation viene eseguito prima ogni Chiamata al metodo (es .: prima di GET e POST a/foo/bar), non su quelli annotati con @ValidateFoo
(sembra un bug per me). Se rimuovo l'annotazione @Provider
dal filtro, non verrà eseguita prima di alcuna chiamata (come previsto).
Sto vedendo questo comportamento in modo coerente, utilizzando WebLogic o Tomcat. La mia gestione delle dipendenze viene eseguita tramite Maven e la versione RESTeasy è 3.0-beta-3.
Chiunque sperimenta/ha sperimentato lo stesso comportamento? Ho visto un altro utente con un problema simile su JBoss forums, senza fortuna finora.
AGGIORNAMENTO: Ancora riscontrato lo stesso problema con RESTeasy 3.0.1-Final.
Grazie per il suggerimento. L'ho provato, ma anche dopo la modifica, il filtro continua a essere chiamato prima di ogni singola chiamata alla mia app, non solo quelle annotate con @ValidateFoo. – Viccari
Ok, ora siamo riusciti a farlo funzionare. Sembra che a RESTeasy non piaccia l'annotazione '@ PreMatching'. Seguendo il tuo suggerimento e rimuovendo l'annotazione '@ PreMatching', tutto ha funzionato come previsto. Grazie! – Viccari
Ha senso, perché '@ PreMatching 'significa prima di mappare la richiesta alla risorsa RESTEasy, quindi a quel punto RESTEasy non sa se c'è una namebinding. – stackoverflower