Sono un po 'in difficoltà ... voglio la mia torta e anche a mangiarla.Jersey ... come registrare tutte le eccezioni, ma invocare ancora ExceptionMappers
Desidero registrare tutte le eccezioni generate dalla mia applicazione. Quindi, se qualcuno colpisce un URL errato, voglio registrare la traccia dello stack su SLF4J.
Quindi probabilmente stai pensando, 'hey questo è semplice, basta implementare un exceptionmapper e registrare l'eccezione "Così ho fatto:.
public class RestExceptionMapper implements ExceptionMapper<java.lang.Exception> {
private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class);
/**
* {@inheritDoc}
*/
@Override
public Response toResponse(Exception exception) {
log.error("toResponse() caught exception", exception);
return null;
}
}
Se si esegue questa operazione, invece di 404 errori quando qualcuno digita un URL errato in, ottengono un errore 500. Si potrebbe supporre che restituire null propagherebbe l'eccezione ai gestori della catena, ma Jersey non lo fa, in realtà fornisce pochissime informazioni sul perché sceglierebbe un gestore su un altro ...
Qualcuno si è imbattuto in questo problema e come lo ha risolto?
userei CDI intercettore –
quindi, qual è il tuo problema: è la 404 errori O è come vengono scelti i mapper di eccezione? ? O qualcos'altro? –
No, il problema è che gli intercettori "stock" forniti con Jersey non sono cal led se usi il codice sopra. 404 errori diventano 500 errori. –