Мы хотели бы реализовать стратегию " неисправность " для управления исключениями в наших приложениях.Одна вещь, которую имеют наши приложения, это концепция ответа «passback», по сути, no-op, который мы хотели бы вернуть, а не 500, 400 и т. Д. Коды состояния HTTP - например, наши внешние приложения всегда должны возвращатьдействительный ответ, даже если было выдано основное исключение - мы бы хотели обработать его внутри приложения и по-прежнему возвращать действительный noop-ответ.
Нашей первой реализацией был фильтр сервлетов, который обернул бы все запросыв блоке try / catch и возвращают возвращаемый по умолчанию возврат из catch, например:
try{
chain.doFilter()
} catch (Throwable t) {
generatePassbackResponse(HttpServletRequest req, HttpServletResponse res)
}
Хотя это в основном работает и выглядит хорошо и чисто (мы можем вернуть хороший текст, установить содержимое / тип соответствующим образоми т. д.), похоже, единственной проблемой является то, что при возникновении исключения ответ по-прежнему поступает с кодом состояния: 500.
HttpServletResponse.setStatus (200) не оказывает влияния, а javadoc говорит, что это применимо только к обычным запросам.
Наша вторая идея реализации заключается внам, возможно, придется перейти на другую страницу или подключить errorPage к web.xml и вручную отправитьEeror на эту страницу - хотя нас интересует, есть ли у кого-то конкретные рекомендации.