java - example - spring security exception handling
Manejo global de excepciones en Jersey (2)
Sí. JAX-RS tiene un concepto de ExceptionMappers. Puede crear su propia interfaz ExceptionMapper para mapear cualquier excepción a una respuesta. Para obtener más información, consulte: https://jersey.github.io/documentation/latest/representations.html#d0e6352
¿Hay alguna forma de manejar excepciones globales en Jersey? En lugar de recursos individuales que tienen bloques try / catch y luego llaman a algún método que desinfecta todas las excepciones que se enviarán de vuelta al cliente, esperaba que hubiera una forma de expresar esto en el lugar donde realmente se llaman los recursos. ¿Esto es posible? ¿Si es así, cómo?
En lugar de, donde sanitize(e)
lanzaría algún tipo de excepción configurada en Jersey al servlet de Jersey:
@GET
public Object getStuff() {
try {
doStuff();
} catch (Exception e) {
ExceptionHandler.sanitize(e);
}
}
Teniendo:
@GET
public Object getStuff() throws Exception {
doStuff();
}
donde la excepción sería arrojada a algo que yo puedo interceptar y llamar sanitize(e)
desde allí.
Esto es realmente solo para simplificar todos los recursos de Jersey y para garantizar que las excepciones que regresan al cliente siempre estén en algún tipo de forma comprensible.
javax.ws.rs.ext.ExceptionMapper es tu amigo.
Fuente: https://jersey.java.net/documentation/latest/representations.html#d0e6665
Ejemplo:
@Provider
public class EntityNotFoundMapper implements ExceptionMapper<javax.persistence.EntityNotFoundException> {
public Response toResponse(javax.persistence.EntityNotFoundException ex) {
return Response.status(404).
entity(ex.getMessage()).
type("text/plain").
build();
}
}