2017-11-13 1 views
-1

Meine Implementierung von ExceptionMapper sieht aus wie unten erfassen:Jersey keine Ausnahme

@Provider 
public class CaptureUnhandledExceptions implements ExceptionMapper<Throwable> 
{ 
    private static final Logger LOGGER = LogFactory.getLogger(CaptureUnhandledExceptions.class); 

    @Override 
    public Response toResponse(Throwable exception) 
    { 
     LOGGER.error("Unhandled exception", exception); 
     ErrorMessage em = new ErrorMessage(50099, ExceptionUtils.getRootCause(exception).getMessage(), 
       exception.getMessage()); 
     return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(em).build(); 
    } 
} 

In meinem REST api, ich versuche Pass falschen Wert für meine JSON Körper, aber es wirft folgende Ausnahme

Can not deserialize value of type com.abccompany.model.ConnectionEndpoint$Binding from String "RandomValue: value not one of declared Enum instance names: [POST, REDIRECT] 
at [Source: org.glassfish.jersey.me[email protected]3fce79f3; line: 16, column: 28] (through reference chain: com.abccompany.model.SpConnection["connection"]->com.abccompany.model.Connection["connectionendpoints"]->java.util.ArrayList[0]->com.abccompany.model.ConnectionEndpoint["endpointbinding"]) 

was fehlt mir? Muss ich meinen Provider unter ResourceConfig registrieren?

In ResourceConfig Anwendungs ​​

this.register(com.abccompany.utils.CaptureUnhandledExceptions.class); 
+0

Sie die "Nicht behandelte Ausnahme" gesehen hinzufügen Haben in Ihrer Protokolldatei? Sie müssen Ihre benutzerdefinierte Ausnahmehandlerklasse nicht registrieren. – zappee

+0

Nein ... Ich habe das getan, nur um sicherzugehen, dass ich nichts verpasst habe. – yogsma

+0

Versuchen Sie, eine neue Exception ("say something ...") bewusst in Ihre Ruhemethode zu werfen, um zu sehen, was passieren wird. – zappee

Antwort

0

Das Update war this.register(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJs‌​onProvider.class); in ResourceConfig