ExceptionMapper не работает в гризли

Извините за мой плохой английский. Я использую гризли и трикотаж для создания веб-приложения.

И я реализую так

        ErrorModel errorModel = new ErrorModel("1", "1", "1");
        WebApplicationException applicationException = (WebApplicationException) exception;
        return Response.status(applicationException.getResponse().getStatus()).type(MediaType.APPLICATION_JSON_TYPE).entity(errorModel).build();

Когда я посетил страницу, которой не существует. Я обнаружил, что он генерирует исключение WebApplicationException. Итак, я отлаживаю и обнаружил, что этот метод вызывается, и возвращаю ответ выше. Но, наконец, ответ http представляет собой html-страницу, созданную гризли. Что я должен делать


person user1896561    schedule 02.03.2015    source источник
comment
Если этот преобразователь сработает, а затем между временем первоначального вызова этого метода (toResponse) и оставшейся частью цикла ответа, если возникнет другое исключение, оно всплывет на уровень контейнера, и контейнер будет обрабатывать исключение. Это сделано для того, чтобы защитить нас от бесконечных циклов. Это может быть то, что происходит. Возможно, во время сериализации тела ответа возникает какое-то исключение. Кто знает. Просто предположение. Для получения дополнительной помощи опубликуйте минимальный, полный и проверяемый пример.   -  person Paul Samsotha    schedule 02.03.2015


Ответы (1)


Убедитесь, что у вас установлено свойство RESPONSE_SET_STATUS_OVER_SEND_ERROR.

У меня была та же проблема с гризли, и он перехватывал мои 400 и отправлял обратно общую страницу ошибки сервлета по умолчанию. Это было решение для джерси 2.

public class RestApplication extends ResourceConfig {

    private static final Logger logger = Logger.getLogger(RestApplication.class.getName());

    public RestApplication() {
        // Set this property so that the 400 will still send the entity correctly.
        property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true");
        registerModules();
    }
person Chris Hinshaw    schedule 02.03.2015
comment
Да, все нормально, когда RESPONSE_SET_STATUS_OVER_SEND_ERROR установлен. Спасибо peeskillet и вам. - person user1896561; 04.03.2015