Исключения отображения перехватчика JAX-RS в пустых методах - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь использовать перехватчик для самоанализа и изменения исключений, возникающих в бэкэнде. Перехватчик выглядит примерно так:

public class ApplicationErrorInterceptor {
    private static final Logger LOGGER = Logger.getLogger(ApplicationErrorInterceptor.class);

    @AroundInvoke
    public Object handleException(InvocationContext context) {
        try {
            return context.proceed();
        } catch (Exception ex) {
            LOGGER.errorf(ex, "An unhandled exception occured!");
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                    .entity("some custom 500 error text")
                    .build();
        }
    }
}

И сервис, использующий этот перехватчик, выглядит примерно так:

@Path("/somepath")
@Interceptors({ApplicationErrorInterceptor.class})
public interface SomeRestService {
    @POST
    @Path("getResponse")
    Response getResponse();

    @POST
    @Path("getVoid")
    void getVoid();
}

Предположим, что реализация для обоих этих методов выдает исключение. Я ожидаю, что исключение будет отображено на 500 ошибок сервера с предоставленным пользовательским сообщением в обоих случаях. К сожалению, метод, возвращающий void, будет сопоставлен с ответом 204 No Content. Если полностью удалить перехватчик, произойдет ошибка сервера 500 по умолчанию, которая является по крайней мере правильным кодом состояния, но я потерял настройку ошибки

...