Деактивировать обработчик ошибок 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у меня уже есть сопоставленные весенние MVCDispatcherServletto/.
как я могу отключить обработчик ошибок по умолчанию 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>