Приложение Hystrix/Feign
вызывает звонки в другие веб-службы.Hystrix - как зарегистрироваться ExceptionMapper
Я хотел бы распространять коды ошибок/сообщения из этих веб-сервисов.
Я внедрил ErrorDecoder
, который правильно декодирует возвращенные исключения и реконструирует их.
К сожалению, эти Исключения обернуты HystrixRuntimeException
, а JSON
вернули не то, что я хочу (общее сообщение об ошибке, всегда 500 http status).
Скорее всего мне нужно ExceptionMapper
, я создал один так:
@Provider
public class GlobalExceptionHandler implements
ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable e) {
System.out.println("ABCD 1");
if(e instanceof HystrixRuntimeException){
System.out.println("ABCD 2");
if(e.getCause() != null && e.getCause() instanceof HttpStatusCodeException)
{
System.out.println("ABCD 3");
HttpStatusCodeException exc = (HttpStatusCodeException)e.getCause();
return Response.status(exc.getStatusCode().value())
.entity(exc.getMessage())
.type(MediaType.APPLICATION_JSON).build();
}
}
return Response.status(500).entity("Internal server error").build();
}
}
К сожалению, этот код не является снимаемым моим приложением (отлаживать заявления не видны в журналах).
Как я могу зарегистрировать его в своем приложении?