[SPRING] Jersey ExceptionMapper는 예외를 매핑하지 않습니다.
SPRINGJersey 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'
해결법
-
==============================
1.내 문제를 해결 한 답변 :
내 문제를 해결 한 답변 :
나는 패키지 ( "package.name")를 넣었다. 내 루트 패키지 이름이고 예외 매퍼는 매력처럼 작동합니다.
@Component @ApplicationPath("/api") public class JerseyConfig extends ResourceConfig { public JerseyConfig() { packages("package.name"); register(UserController.class); register(TimezoneController.class); } }
-
==============================
2.jax-rs 공급자로서 사용자 정의 ExceptionMapper를 구성 했습니까? 예외가 EmailExistsException으로 래핑되고 있습니까? 이 게시물을보아야 할 수도 있습니다.
jax-rs 공급자로서 사용자 정의 ExceptionMapper를 구성 했습니까? 예외가 EmailExistsException으로 래핑되고 있습니까? 이 게시물을보아야 할 수도 있습니다.
예외 맵퍼를 사용하는 JAX-RS
-
==============================
3.나는 똑같은 문제가 있었다.
나는 똑같은 문제가 있었다.
방금
태그의 태그에있는 web.xml 파일의 루트 패키지를 언급했습니다. 그런 다음 매력처럼 작동하기 시작했습니다.
<servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.two95.restful</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
from https://stackoverflow.com/questions/27982948/jersey-exceptionmapper-doesnt-map-exceptions by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring-boot webapp가 준비된 후 자동으로 브라우저를 시작합니다. (0) | 2019.02.18 |
---|---|
[SPRING] JSR-356 WebSocket @ServerEndpoint와 Spring 3 bean의 통합 (0) | 2019.02.18 |
[SPRING] 포함 된 JAR에서 Spring의 @ComponentScan 검색 컴포넌트를 만드는 방법 (0) | 2019.02.18 |
[SPRING] Spring과 DBCP로 JDBC 커넥션을 처리하는 적절한 방법은 무엇입니까? (0) | 2019.02.18 |
[SPRING] Spring-ws 엔드 포인트에서 HTTP 헤더에 액세스하는 방법? (0) | 2019.02.18 |