Ich versuche, diesen Ausnahme-Mapper aufzurufen, um eine nicht gefundene 404-Antwort zurückzugeben, aber es wird immer 500 interner Fehler zurückgegeben. Jersey Version ist 2.22.1. Code-Ausschnitt unten. Schätze alle Hilfe.Jersey ExceptionMapper wird nicht aufgerufen
Danke.
Ausnahme-Mapper-Klasse.
package org.learn.rest.messengerdemo.exception;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class DataNotFoundExceptionMapper implements ExceptionMapper<DataNotFoundException>{
@Override
public Response toResponse(DataNotFoundException ex) {
return Response.status(Response.Status.FORBIDDEN).build();
}
}
Ausnahmeklasse.
Paket org.learn.rest.messengerdemo.exception;
public class DataNotFoundException extends RuntimeException{
private static final long serialVersionUID = 2176642539344388961L;
public DataNotFoundException(String message)
{
super(message);
}
}
Methode der Serviceklasse, die auslöst.
public Message getMessage(long messageId) {
Message message = messages.get(messageId);
if(message == null)
{
throw new DataNotFoundException("Message with id " + messageId + " not found");
}
return message;
}
Und die Ressourcenklasse.
@GET
@Path("/{messageId}")
public Message getMessage(@PathParam("messageId") long messageId) {
return messageService.getMessage(messageId);
}