2013-02-19 10 views
5

C'è un'opzione in applicazioni web Java per gestire le eccezioni definendo error-page in web.xml:Una pagina di errore JSP può causare problemi?

<error-page> 
<error-code>500</error-code> 
<location>/error500.jsp</location> 
</error-page> 

Mi chiedo se ci potrebbe potenzialmente essere un problema con la definizione di una pagina di errore JSP (al contrario di una pagina di errore HTML). Perché i JSP vengono eseguiti sul lato server. Può esserci uno scenario in cui il server è "mezzo morto", genera un'eccezione, tenta di reindirizzare alla pagina di errore, ma non può renderlo perché è "mezzo morto"?

Per "mezzo morto" intendo che il server è in uno stato in cui alcune cose funzionano ancora, ma altre cose non funzionano. Specificamente intendo che qualunque cosa controlli il reindirizzamento alla pagina di errore definita in web.xml funziona ancora, ma il rendering effettivo del JSP non funziona per qualche ragione (qualcosa genera un'eccezione).

In realtà non ho visto un problema come questo, ma mi chiedo se è possibile. Perché potenzialmente una pagina di errore HTML potrebbe funzionare (perché non ha logica lato server), mentre la pagina di errore JSP non funzionerebbe.

E se questo è il caso, allora come posso "tornare indietro" alla pagina di errore HTML quando la pagina di errore JSP non riesce? Desidero ancora utilizzare la pagina degli errori JSP per visualizzare i dettagli degli errori che sono tornati nella risposta, ma se non è possibile, voglio mostrare la pagina HTML.

spero che abbia un senso ....

+0

+1 molto buona domanda –

+0

Puoi elaborare una situazione di "mezzo morto"? –

+0

@HardikMishra Ho modificato la domanda per spiegarmi meglio. Si prega di consultare il secondo paragrafo. – Malki

risposta

1

ho trovato una soluzione:

  1. Definire l'errore 500 per reindirizzare a un servlet (invece di una pagina)
  2. Definire anche una pagina di errore 404 - ne fanno una semplice pagina HTML.
  3. Nel servlet, reindirizzare alla pagina di errore 500 JSP.
  4. Tutta la logica nel servlet è circondata da un blocco try-catch. Il blocco catch fa response.sendError(HttpServletResponse.SC_NOT_FOUND); che reindirizzerà alla pagina dell'errore 404 definita in web.xml.
0

Posso certamente immaginare uno scenario in cui il vostro error.jsp richiede alcune funzionalità dal server, e il server non riesce a soddisfare tale (ad esempio, si perde la connessione al db , genera un errore, lo error.jsp viene attivato ma che richiede una connessione db per qualche motivo, ad esempio la registrazione dell'errore o la fornitura di informazioni di contatto?).

Per tale motivo, manterrei il error.jsp relativamente semplice e indipendente.

+0

Sono d'accordo nel mantenerlo semplice, ma c'è un modo per garantire che in caso di errore nel rendering del JSP l'applicazione si reindirizzasse alla pagina di errore HTML più semplice? – Malki