Jersey ExceptionMapper nicht anzeigen Ausnahmen
meine Feder Boot + Jersey-REST-Dienst nicht funktioniert wie erwartet.
EmailExistsException geworfen wird UserController ich aber nur die Fehlermeldung 500. Die ganze Zeit. Und meine Ausnahmen werden nicht protokolliert.
Ich vermute, es gibt einige Problem bei der Konfiguration mit exception-handling, aber nicht wissen, wo Sie es einrichten. Irgendwelche Vorschläge?
@POST
@Path("register")
@Produces(MediaType.APPLICATION_JSON)
public Response register(NewUserPayload newUserPayload) throws EmailExistsException, MessagingException
EmailExistsExceptionMapper
@Provider
public class EmailExistsExceptionMapper extends AbstractExceptionMapper implements
ExceptionMapper<EmailExistsException>
{
@Override
public Response toResponse(EmailExistsException e)
{
ResponseEntity re = new ResponseEntity(org.springframework.http.HttpStatus.BAD_REQUEST);
return this.errorResponse(HttpStatus.BAD_REQUEST_400, re, e);
}
}
AbstractExceptionMapper
@Slf4j
public abstract class AbstractExceptionMapper
{
protected Response errorResponse(int status, ResponseEntity responseEntity, Throwable t)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.error(sw.toString()); //logging stack trace.
return customizeResponse(status, responseEntity);
}
private Response customizeResponse(int status, ResponseEntity responseEntity)
{
return Response.status(status).entity(responseEntity).build();
}
}
bauen.gradle
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: 'spring-boot-starter-tomcat'
}
compile "org.springframework.boot:spring-boot-starter-jetty"
compile "org.springframework.boot:spring-boot-starter-security"
compile "org.springframework.boot:spring-boot-starter-aop"
compile "org.springframework.boot:spring-boot-starter-data-jpa"
compile "org.springframework.boot:spring-boot-starter-thymeleaf"
compile "org.springframework.boot:spring-boot-starter-jersey"
compile 'org.springframework.boot:spring-boot-starter-mail'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort, dass meine Probleme gelöst:
Habe ich Pakete("Paket.name"); was ist mein root-Paket name und exception-Mappern arbeiten wie ein Charme.
package
Erklärung vermeiden zu deklarieren, Controller ?register(YourExceptionMapper.class)
oder legen Sie es in ein gescanntes Paket überpackages("YourExceptionMapperPackage")
. Ich verbrachte ein paar Stunden versucht, dies herauszufinden, bevor ich Ihre Antwort.Haben Sie konfigurierte ExceptionMapper als eine jax-rs-provider, und Sind Sie sicher, dass Ihre Ausnahme ist immer verpackt in EmailExistsException? Möglicherweise haben Sie diesen Beitrag anzusehen.
JAX-RS mit Ausnahme Mapper
Ich hatte das gleiche problem
Ich erwähnte nur das root-Paket auf dem web.xml Datei in
<param-value>
tag<init-param>
Dann fing Es an zu arbeiten wie Charme
Wenn Sie mit ExceptionMapper, müssen Sie sich registrieren und Ihre exception-mapper:
In Jersey config-Klasse, scan-Jersey Endpoint-Klasse mit
@Path
Anmerkungen und eigene Exception-Mapper mit@Provider
Anmerkung zu registrieren: