2015-01-30 3 views
3


통합 테스트에는 스프링 부트를 사용하고 REST URL에는 RESTEasy를 사용합니다. 나쁜 요청을 보낼 때 throw 된 예외에 대한 테스트 케이스를 추가 했으므로 BadRequestException에 대한 ExceptionMapper를 구성했습니다. 결과적으로 throw 된 RESTEasy 예외를 억제하기 위해 RESTEasy의 ExceptionMapper를 확장하는 BadRequestExceptionHandler를 추가했습니다. '@SpringBootApplication'을 사용하고 있었지만 includeFilters에 유형을 ANNOTATION으로 설정하고 Provider.class에 값을 설정하여 '@ComponentScan'을 추가했습니다. 내 처리기 클래스를 @Component로 표시 했으므로 Spring이 bean (autowiring worked)을 만들 수 있지만 RESTEasy가이 핸들러를 선택하지 않고 로그에서 예외를 계속 볼 수 있습니다.RESTEasy ExceptionMapper가 스프링 부트와 함께 작동하지 않음

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

@Provider 
@Component 
public class BadRequestExceptionHandler implements ExceptionMapper<BadRequestException> { 
    @Override 
    public Response toResponse(BadRequestException exception) { 
     return Response.status(Response.Status.BAD_REQUEST) 
         .entity(exception.getMessage()) 
         .build(); 
    } 
} 

@SpringBootApplication 
@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, value = Provider.class)) 
public class TestApplication extends SpringBootServletInitializer { 
... 
} 

감사합니다,
패디 내가 정의 JaxRs 응용 프로그램 클래스를 사용하여 서버 내장 된 사용자 정의 물러 사용 된

답변

1

(내 작업이 시작되기 전에 이미 선언, 그래서 그것을 다시 사용하는 것이 더 느꼈다). 따라서 사용자 정의 예외 매퍼로 구성된 공급자 팩토리를 설정하고 Resteasy 배포 개체에 공급자 팩터 리를 설정해야했습니다.

ResteasyDeployment deployment = new ResteasyDeployment(); 
ResteasyProviderFactory providerFactory = 
      ResteasyProviderFactory.getInstance(); 
providerFactory.addExceptionMapper(BadRequestExceptionMapper.class); // My custom exception mapper 
deployment.setProviderFactory(providerFactory); 

감사합니다, 패디

2

내가 직접 귀하의 질문에 관련이없는 것을 알고 있지만, 실제로 문제를 해결할 수 있습니다 여기에 코드입니다.

com.paypal.springboot : RESTEasy가 스프링 부팅 - 스타터

이보기는 JAX-RS 구현 등이 RESTEasy가 봄 부팅 스타터를 사용하여 RESTEasy가를 사용하여 봄 부팅 REST 애플리케이션을 구축 할 수 있습니다 프로젝트 웹 사이트 : https://github.com/paypal/resteasy-spring-boot/

관련 문제