2012-12-18 1 views
6

RestEasy를 사용하여 Restful 웹 서비스를 구축하고 있습니다. 특정 예외 응답을 준비하기 위해 ExceptionMappers를 구현했습니다.RestEasy Post Process ExceptionMapper가 응답을 생성 할 때 인터셉터 체인이 통과하지 않습니다.

또한 MessageBodyWriterInterceptors와 몇 가지 PostProcessorInterceptors를 구현했습니다.

문제 : 모든 리소스가 예외를 throw하지 않을 때 모두 올바르게 작동합니다. 내 구현은 예상대로 작동합니다. 모든 사후 프로세서 인터셉터와 메시지 본문 작성자 인터셉터가 호출됩니다.

그러나 리소스 메소드에서 예외가 발생하면 등록 된 ExceptionMappers가 호출되고 응답을 생성합니다. 그러나이 경우 사후 프로세서 인터셉터 체인은 통과하지 않습니다. 그들은 전화를받지 않습니다.

이 경우 어떻게해야합니까? 내 인터셉터 로직을 내 예외 매퍼에 쓰거나 사용할 수있는 솔루션이 있습니까?

답변

11

예외가 발생하면 포스트 프로세서가 호출되지 않습니다. 그들은 서로 다른 병렬 해상도 경로에 있습니다 :

 
     /'Normal' JAX-RS response -> Post Processors -> Message Body Writers 
Processing 
      \ Exception -> Exception Mappers 

당신이 당신의 포스트 프로세서와 예외 매퍼 모두에서 실행해야 논리가있는 경우 다음 바람직 공통 유틸리티 클래스를 통해 (모두를 포함해야합니다).

+0

답장을 보내 주셔서 감사합니다. 공통 유틸리티 클래스를 사용하여 로직을 구현합니다. – Bhaskar

+0

문제 없음. 도움이된다면 제 대답을 받아 들일 수 있습니다. 프로젝트의 나머지 부분에 대해서는 행운을 빈다. – Perception

관련 문제