Ошибочный Возврат Страницы ответ значения по умолчанию Кода состояния 200

Мы хотели бы реализовать "стратегию" барьера отказа руководящих исключений в наших приложениях. Одной вещью, которую имеют наши приложения, является понятие "passback" ответа, в основном не, который мы хотели бы возвратить в предпочтении к броску 500, 400, и т.д. Коды состояния HTTP - например, наши внешние приложения направления должны всегда возвращать допустимый ответ, даже если бы базовое исключение было выдано то - мы хотели бы обработать это внутреннее к приложению и все еще возвратить допустимый noop ответ.

Наша первая реализация была Фильтром Сервлета, который перенесет все запросы в блок попытки/выгоды и возвратит возврат по умолчанию из выгоды, например:

try{
  chain.doFilter()
} catch (Throwable t) {
  generatePassbackResponse(HttpServletRequest req, HttpServletResponse res)
}

В то время как это главным образом работает, и чувствует себя прекрасно и чувствует себя чистым (мы можем возвратить хороший текст, установить содержание/тип соответственно, и т.д.), одна проблема, кажется, что, когда Исключение выдается, ответ все еще проникает с Кодом состояния: 500.

HttpServletResponse.setStatus (200) не имеет эффекта, и javadoc действительно говорит, что только применяется на нормальные запросы.

Наша вторая реализация думала, нам, вероятно, придется передать другой странице или включить errorPage в web.xml и вручную sendError к той странице - хотя мы интересуемся тем, есть ли у кого-либо определенная рекомендация.

5
задан jayshao 14 July 2010 в 21:48
поделиться

1 ответ

Разве вы не можете просто использовать стандартную конфигурацию web.xml:

<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>

<error-page>
    <location>/error.jsp</location>
    <exception-type>java.lang.Exception</exception-type>
</error-page>

Я не понимаю, что еще вы пытаетесь сделать, чего это еще не касается? Если это просто код ошибки, я думаю, вы можете установить это с помощью объекта ответа.

0
ответ дан 15 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: