2013-06-19 12 views
7

Desidero fornire una pagina di errore 404 personalizzata nell'applicazione Web Spring 3.1, ma non posso disattivare la pagina di errore 404 predefinita di Jetty 8.Disattivare il gestore di errori 404 predefinito di Jetty

Jetty 8, fuori dalla scatola, fornisce una pagina di default di errore 404: quando si visita un sito Web Jetty ospitato, e fornendo un percorso URL che non è gestita da qualsiasi servlet (ad esempio visitando http://www.example.com/nonexisting), le risposte molo con suo errore propria pagina HTML di default:

HTTP ERROR 404 

Problem accessing /nonexisting. Reason: 

    Not Found 
Powered by Jetty:// 

di sostituire questo comportamento predefinito,

ma il mio sito web restituisce comunque proprio errore pagina HTML predefinito di Jetty.

Jetty 8's official documentation talks about setting up a "custom error pages", ma i suggerimenti ci dicono

  • Per configurare un gestore degli errori personalizzato Jetty (io non voglio fare questo, voglio farlo dentro la mia propria sorgente @Controller come detto sopra)
  • per creare un "catch all context e creare un'app Web" root "mappata all'URI /." (Io non voglio fare questo come dentro la mia web.xml ho già mappato di DispatcherServlet a/Spring MVC.

Come posso spegnere gestore degli errori predefinito del molo e hanno la gestione degli errori sia fatta come sottolineato in precedenza?

risposta

6

La soluzione al mio problema è stato quello di aggiungere un personalizzato org.eclipse.jetty.server.handler.ErrorHandler

Se un utente non specifica esplicitamente alcun ErrorHandler, l'istanza del server Jetty sembra registrare un valore predefinito ErrorHandler.

Come indicato su http://www.eclipse.org/jetty/documentation/current/custom-error-pages.html, per registrare un numero personalizzato ErrorHandler, è possibile attenersi alla seguente procedura.

  1. Implementare una sottoclasse org.eclipse.jetty.server.handler.ErrorHandler, ad es. com.example.CustomErrorHandler.
  2. Rendi questa sottoclasse disponibile all'istanza del server Eclipse, ad es. raggruppando CustomErrorHandler in un file jar e quindi copiando il file jar nella directory ${jetty.base}/lib/ext.
  3. Configurare l'istanza del server Jetty di avere questa abitudine ErrorHandler registrato come un fagiolo:

file di 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> 
Problemi correlati