Страница ошибки перехвата для jax-ws на JBoss 7

Основная проблема

Мы запускаем некоторые приложения на JBoss 7.2 и теперь должны запретить JBoss отображать информацию о версии и т. Д. При неожиданном результате http (коды состояния 4xx или 5xx).

Я имею в виду такие страницы ошибок:

Преследуемые решения

После более глубокого изучения JBoss получается, что эта страница генерируется ErrorReportValve когда код состояния ответа 400+ и содержание ответа по-прежнему пустое. Этот клапан не может быть настроен, и, следовательно, не может быть использован в нашем случае.

Таким образом, мы рассмотрели / попробовали несколько подходов, некоторые из которых были частично успешными, в то время как другие не были:

  • Удалить / заменить ErrorReportValve в целом. К сожалению это упоминается в StandardHost и нет никакого способа переопределить его (хотя ссылка использует имя класса), и разработчики JBoss не реализовали его, даже несмотря на то, что его запросили.
  • Укажите конкретные страницы ошибок / обработчики в web.xml и для jax-rs. Это оставляет jax-ws, хотя, и это главная проблема, с которой мы сейчас имеем дело.
  • Предоставить глобальный клапан для веб-подсистемы. Это не удалось, потому что эти клапаны получают статус ответа после ErrorReportValve и, следовательно, не может помешать ему написать страницу.
  • Предоставьте клапан на войну через jboss-web.xml. Это заботится о наших войнах, то есть нет необходимости обрабатывать эти ошибки в web.xml или jar-rs. Тем не менее, jax-ws по-прежнему проблема.

Оставшаяся проблема детализации

Как вы можете видеть, мы частично добились успеха, предоставив наш собственный клапан через jboss-web.xml

Однако, поскольку наши веб-сервисы jax-ws развернуты в ejb-jar, мы не можем использовать тот же подход здесь, и мы не нашли способ определить клапан или что-то подобное для всего контекста.

Кажется, что мы могли бы использовать конфигурации конечных точек, которые могли бы позволить нам некоторую форму контроля над обработкой ошибок, но это также похоже на то, что они могут быть определены только на уровне веб-сервиса.

Нам понадобится весь веб-контекст, чтобы правильно обрабатывать ошибки, то есть если мы вызываем http://ourhost/jax-ws-services/whatever и нет сервиса whatever тогда контекст jax-ws-services должна отображать пользовательскую (или, по крайней мере, пустую) страницу ошибки - в этих случаях мы получаем сообщение, отображаемое выше.

TL; DR: вопросы

Обобщены вопросы будут:

  • Есть ли способ настроить обработчик клапана или глобальной ошибки в веб-тексте jax-ws, который позволяет нам влиять на содержимое страницы с ошибкой?
  • Есть ли способ настроить что-то на уровне приложения или даже на глобальном уровне?

Заметки

Хотя нам нужно было достичь аналогичной цели в Wildfly 10+, мы не можем переключить все наши приложения прямо сейчас, поэтому нам в первую очередь нужен ответ для JBoss 7.2 (не EAP).

При необходимости мы могли бы обрабатывать эти ошибки в Apache, но в этом случае нам нужно было бы различать страницы ошибок, генерируемые приложением (например, пользовательские страницы 404, 401, генерируемые поставщиком удостоверений и т. Д.), И страницы ошибок. сгенерированный JBoss (который мы не хотим содержать информацию о версии как минимум). Это похоже на хрупкий вариант, и, следовательно, не будет нашим предпочтительным способом.

0 ответов

Другие вопросы по тегам