2013-02-19 6 views
5

Es gibt eine Option in Java-Web-Anwendungen Ausnahmen durch die Definition von Fehler-Seite in web.xml zu handhaben:Kann eine JSP-Fehlerseite Probleme verursachen?

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

Ich frage mich, ob es möglicherweise ein Problem mit der Definition eine JSP-Fehlerseite (im Gegensatz sein könnte eine HTML-Fehlerseite). Da JSPs auf der Serverseite ausgeführt werden. Kann es ein Szenario geben, in dem der Server "halbtot" ist, eine Ausnahme auslöst, versucht, auf die Fehlerseite umzuleiten, aber wegen "halb tot" nicht rendern kann?

Mit "halbtot" meine ich, dass der Server in einem Zustand ist, in dem einige Dinge noch funktionieren, aber andere Dinge nicht funktionieren. Konkret bedeute ich, dass das, was die Umleitung auf die in web.xml definierte Fehlerseite steuert, immer noch funktioniert, aber das eigentliche Rendern der JSP funktioniert aus irgendeinem Grund nicht (etwas löst eine Ausnahme aus).

Ich habe nicht wirklich ein Problem wie dieses gesehen, aber ich frage mich, ob es möglich ist. Weil dann möglicherweise eine HTML-Fehlerseite funktioniert (weil sie keine serverseitige Logik hat), während die JSP-Fehlerseite nicht funktioniert.

Und wenn das der Fall ist, wie kann ich dann auf die HTML-Fehlerseite "zurückgreifen", wenn die JSP-Fehlerseite fehlschlägt? Ich möchte immer noch die JSP-Fehlerseite verwenden, um die Fehlerdetails anzuzeigen, die in der Antwort zurückgegeben wurden, aber wenn dies nicht möglich ist, möchte ich die HTML-Seite anzeigen.

Ich hoffe, das macht Sinn ....

+0

+1 sehr gute Frage –

+0

Können Sie "halbtot" Situation erarbeiten? –

+0

@HardikMishra Ich habe die Frage bearbeitet, um mich besser zu erklären. Bitte beachten Sie den zweiten Absatz. – Malki

Antwort

1

fand ich eine Lösung:

  1. Definieren Sie den Fehler 500 auf ein Servlet (anstelle einer Seite)
  2. definieren auch eine 404-Fehlerseite umgeleitet werden - es ist eine einfache HTML-Seite machen.
  3. Im Servlet Redirect auf die JSP-Fehler 500 Seite.
  4. Die gesamte Logik im Servlet ist von einem try-catch-Block umgeben. Der catch-Block führt response.sendError(HttpServletResponse.SC_NOT_FOUND); aus, der auf die in web.xml definierte Fehler 404-Seite umleitet.
0

ich sicherlich ein Szenario vorstellen, in dem Ihre error.jsp einige Funktionen vom Server erfordert, und der Server ausfällt, dass erfüllen (zB Sie die Verbindung zu Ihrem db verlieren , wird ein Fehler ausgelöst, die error.jsp wird ausgelöst, aber , die erfordert eine DB-Verbindung aus irgendeinem Grund - vielleicht den Fehler protokollieren oder Kontaktinformationen?).

Aus diesem Grund würde ich die error.jsp relativ einfach und unabhängig halten.

+0

Ich stimme zu, es einfach zu halten, aber gibt es eine Möglichkeit sicherzustellen, dass die Anwendung im Falle eines Fehlers beim Rendern der JSP auf die einfachere HTML-Fehlerseite umleitet? – Malki