toResponse in jersey ExceptionMapper nicht aufgerufen

So, ich Baue eine web-Anwendung, wir verwenden JPA und Jersey zu konsumieren/produziert JSON-Daten.

Habe ich eine eigene "EntityException" sowie eine eigene "EntityExceptionMapper"

Hier ist der mapper:

  @Provider
public class EntityExceptionMapper implements ExceptionMapper<EntityException> {

    public EntityExceptionMapper() {
        System.out.println("Mapper created");
    }

    @Override
    public Response toResponse(EntityException e) {
        System.out.println("This doesnt print!");
        return Response.serverError().build();
    }
}

Meine Ausnahme:

public class EntityException extends Exception implements Serializable{

  public EntityException(String message) {
      super(message);
      System.out.println("This prints...");
  }

}

Wird, und ich nenne es von einem REST-Aufruf:

@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public String test() throws EntityException{
    throw new EntityException("This needs to be send as response!!");
    //return "test";
}

Mein problem ist, dass, wenn die obige exception geworfen wird, die ich im Konstruktor (Drucke: "Diese Drucke...") Edit: ich bekomme auch das: "Mapper erstellt!"

Aber meine Antwort ist leer, und ich nicht bekommen, um das sys aus meiner toResponse Methode. Das ist wirklich ähnlich wie das Beispiel auf dem Trikot website:

https://jersey.java.net/nonav/documentation/1.12/jax-rs.html#d4e435

Was bin ich??

  • Nimmst du diese: "Mapper " erstellt" ? Vielleicht hat dein mapper wird nicht richtig erkannt. Senken Sie den logging level von jersey, um zu sehen, welche Klassen gescannt werden.
  • Ja, ich bin immer die "Mapper " erstellt" (editiert, danke)
  • Was bekommen Sie als Ergebnis? Sie sollten ein leeres 500 Antwort, basierend auf Ihren code.
  • Wenn Sie javax.ws.rs.core.Antrag zur Registrierung von Ressourcen. Sie können hinzufügen, EntityExceptionMapper.class in Satz von resource-Typen. Etwas mag dieses: - Klassen.add(EntityExceptionMapper.class);
  • Ich bekomme 204 no content (wie meine toResponse scheint nie genannt werden), nach Ihrem Kommentar Loc, ich habe versucht, mit etwas, das wäre bereits registriert ist (um zu sehen, ob es funktionieren würde) ich habe versucht, die Erweiterung WebApplicationException, und jetzt funktioniert es! Ich werde in entweder mit, dass als ein Typ für meine Ausnahme oder registrieren Sie meine eigenen. Ich denke, dies ist endlich gelöst! Vielen Dank.
  • mit classes.add(EntityExceptionMapper.class); arbeitete für mich, vielen Dank @Provider scheint nicht zu funktionieren

InformationsquelleAutor alex | 2014-03-14
Schreibe einen Kommentar