Деактивировать обработчик ошибок 404 по умолчанию Jetty
Я хочу предоставить пользовательскую страницу ошибок 404 в моем веб-приложении Spring 3.1, но я не могу отключить страницу ошибок 404 по умолчанию Jetty 8.
Jetty 8, из коробки, предоставляет страницу ошибки 404 по умолчанию:
при посещении веб-сайта, размещенного на причале, и предоставлении URL-адреса, который не обрабатывается сервлетом (например, посетив http://www.example.com/nonexisting
), Jetty ответы с своя собственная страница ошибки HTML по умолчанию:
HTTP ERROR 404
Problem accessing /nonexisting. Reason:
Not Found
Powered by Jetty://
для замены этого значения по умолчанию поведение,
-
я убрал
DefaultHandler
из моего XML-файла Jetty, -
я отредактировал мой
web.xml
чтобы включить оба местоположения обработчика ошибок сервлета 2.5 и сервлета 3.0, указывающие на/error
, -
я создал специальный
@Controller
для рассмотрения запроса/error
,
но мой сайт по-прежнему возвращает собственная ошибка HTML Jetty по умолчанию страница.
официальная документация Jetty 8 говорит о настройке "пользовательских страниц ошибок", но предложения там говорят
- чтобы настроить пользовательский обработчик ошибок причала (я не хочу этого делать, я хочу сделать это внутри моей собственной весны
@Controller
как уже упоминалось выше) - чтобы создать "поймать весь контекст и создать "корневое" веб-приложение, сопоставленное с
/
URI."(Я не хочу делать это, как внутри моегоweb.xml
у меня уже есть сопоставленные весенние MVCDispatcherServlet
to/.
как я могу отключить обработчик ошибок по умолчанию Jetty и сделать обработку ошибок, как указано выше?
2 ответов
решением моей проблемы было добавить пользовательский org.eclipse.jetty.server.handler.ErrorHandler
.
если пользователь явно не указать ErrorHandler
, экземпляр сервера Jetty, похоже, регистрирует значение по умолчанию ErrorHandler
.
как описано на http://www.eclipse.org/jetty/documentation/current/custom-error-pages.html, чтобы зарегистрировать пользовательский ErrorHandler
, вы можете выполнить следующие шаги.
- реализовать некоторые
org.eclipse.jetty.server.handler.ErrorHandler
подкласс, например,com.example.CustomErrorHandler
. - сделать этот подкласс доступен для вашего экземпляра сервера Eclipse, например, путем связывания
CustomErrorHandler
наjar
файл, а затем копирование этого наjetty.xml
:<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> <Configure id="Server" class="org.eclipse.jetty.server.Server"> <!-- more configuration --> <Call name="addBean"> <Arg> <New class="com.example.CustomErrorHandler"> <Set name="server"><Ref refid="Server" /></Set> </New> </Arg> </Call> </Configure>