Jersey ExceptionMapper不会映射异常

我的Spring Boot + Jersey REST服务无法正常工作。

EmailExistsException在UserController中引发,但我始终只收到错误500。而且我的异常未记录。

我怀疑异常处理存在一些配置问题,但不知道在哪里进行设置。有什么建议么?

@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();

}

}

build.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'

回答:

解决了我的问题的答案:

我已经把packages(“ package.name”); 这是我的根程序包名称,异常映射器的工作原理很吸引人。

@Component

@ApplicationPath("/api")

public class JerseyConfig extends ResourceConfig

{

public JerseyConfig()

{

packages("package.name");

register(UserController.class);

register(TimezoneController.class);

}

}

以上是 Jersey ExceptionMapper不会映射异常 的全部内容, 来源链接: utcz.com/qa/400562.html

回到顶部