2015-04-02 11 views
9

Nella nostra base di codice (legacy), stiamo lanciando WebApplicationException in diversi modi. Nel tentativo di fare un ordine nel modo in cui gestiamo le eccezioni, volevo creare un ExceptionMapper per questi WAE (e altri).ExceptionMapper per WebApplicationException generate con l'entità?

Mi sono reso conto, tuttavia, che ExceptionMapper di Jersey mappa solo WAE che non è stato gettato con un'entità.

Ad esempio:

throw new WebApplicationException(Response.status(500).build()); 

Questa eccezione ricade nel ExceptionMapper.

throw new WebApplicationException(Response.status(500).entity(WsResourceUtils.createWSResourceRestError(500, "bla")).build()); 

Questa eccezione NON viene rilevata da ExceptionMapper.

Entrambi vengono lanciati dallo stesso punto nel codice.

Questo è il mio ExceptionMapper:

@Provider 
public class GeneralExceptionMapper implements ExceptionMapper<Throwable> { 

    private static final Logger logger = LoggerFactory.getLogger(GeneralExceptionMapper.class); 

    @Override 
    public Response toResponse(Throwable e) { 
     logger.error("Caught a WAE", e); 
... 
} 

E 'possibile creare un ExceptionMapper che cattura WebApplicationExceptions anche se la loro risposta è già integrato con un'entità?

Stiamo usando Jersey 1.17.

Grazie.

+0

2 anni dopo, questo è ancora un problema con Jersey 2. 26 – ChrisO

risposta

0

perche guardando il codice di GIST:

https://gist.github.com/jeorfevre/9fb2c447a01bcc724998

  1. Registrare un Mapper quella di MagicException che contiene Risposta
  2. Definire Eccezione che contengono la risposta
  3. Gettare questa eccezione
+0

1. Questa soluzione mi richiede di cambiare ogni luogo in cui sto lanciando WebApplicationExceptions, per lanciare invece MagicException. 2. Non stai gestendo il problema principale: MagicException ha ancora un'entità impostata in esso e quindi non verrà ancora catturato dal programma di analisi. – Shakkalakka

+0

capito, sto correggendo la risposta ora. – jeorfevre

+0

Com'è diverso da quello che ho fatto? Ho già un mappatore delle eccezioni, ma non cattura WAE che è già stato lanciato con un'entità. – Shakkalakka

Problemi correlati