Как отключить сопоставление org.eclipse.jetty.server.error_page.global для / error в Spring Boot с Embedded Jetty - PullRequest
0 голосов
/ 13 декабря 2018

Я использую Spring Boot 2.0.3 с Jetty, я хочу полностью удалить обработчик страницы ошибок, чтобы в случае ошибки он работал быстро, не хочу создавать конечную точку / error и не хочу /ошибка маршрутизации с другим 404 ..., я попытался:

Используя jettyServerCustomizer, он не получает нужные свойства.

Расширяя WebServerFactoryCustomizer, он только добавляет обработчики ошибок, но не может переопределитьглобальный обработчик.

При попытке настройки через раздел ошибок приложения yml нельзя переопределить конфигурацию по умолчанию / ошибку.

Попытка переопределения компонента ErrorPageCustomizer ... это закрытый класс безусловия

Что еще можно сделать?

1 Ответ

0 голосов
/ 18 декабря 2018

«Страница глобальной ошибки» - это обязательное поведение сервлета 3.0+, его нельзя отключить, просто настройте его так, как вы хотите.

По умолчанию «страница глобальной ошибки»«местоположение с установленной по умолчанию установкой Jetty не определено, то есть это приведет к появлению страницы ошибки по умолчанию, отображаемой ErrorHandler.

. Чтобы настроить« глобальную страницу ошибки »сервлета 3.0+, вы должны определить веб-дескриптор.(в вашем WEB-INF/web.xml) иметь запись error-page без объявленного кода состояния или исключения.

Тот факт, что вы видите «/ error», указывает на то, что что-то в вашей среде преднамеренно устанавливает «глобальную ошибку».page "к этому значению.

Например:

<!-- defined as servlet spec global error page -->
<error-page>
    <location>/global-error</location>
</error-page>
<!-- defined by response status code -->
<error-page>
    <error-code>500</error-code>
    <location>/generic-error-on-server</location>
</error-page>
<!-- defined by exception type -->
<error-page>
    <exception-type>java.io.IOException</exception-type>
    <location>/error-in-io</location>
</error-page>

Во встроенном Jetty WebAppContext может использоваться для вызова getErrorHandler(), который всегда будет по крайней мере org.eclipse.jetty.server.handler.ErrorHandler, но также может быть более полезным org.eclipse.jetty.servlet.ErrorPageErrorHandler.

Если вы получаете org.eclipse.jetty.servlet.ErrorPageErrorHandler, продолжайте и звоните ...

ErrorPageErrorHandler errors = (ErrorPageErrorHandler) webappContext.getErrorHandler();
errors.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE, "/myglobalerror");

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

...