2013-02-19 24 views
5

Istnieje opcja w Javie aplikacji internetowych do obsługi wyjątków, których autorem jest zdefiniowanie error-stronę w web.xml:Czy strona błędów strony JSP może powodować problemy?

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

Zastanawiam się, czy istnieje potencjalnie mogłyby być problem z definiowaniem stronę błędu JSP (w przeciwieństwie do strona błędu HTML). Ponieważ strony JSP są uruchamiane po stronie serwera. Czy może istnieć scenariusz, w którym serwer jest "na wpół martwy", rzuca wyjątek, próbuje przekierować na stronę błędu, ale nie może go renderować, ponieważ jest "na wpół martwy"?

Przez „pół-martwy” To znaczy, że serwer jest w stanie, w którym pewne rzeczy nadal działać, ale innych rzeczy nie działają. W szczególności mam na myśli to, że wszystko, co kontroluje przekierowanie do strony błędu zdefiniowanej w web.xml, nadal działa, ale rzeczywiste renderowanie strony JSP nie działa z jakiegoś powodu (coś wyrzuca wyjątek).

Nie widziałem takiego problemu, ale zastanawiam się, czy to możliwe. Ponieważ wtedy potencjalnie strona błędu HTML działałaby (ponieważ nie ma logiki po stronie serwera), podczas gdy strona błędu JSP nie działałaby.

A jeśli tak jest, to jak mogę „powróci” do strony błędu HTML, gdy strona JSP błędu nie powiedzie? Nadal chcę używać strony błędu strony JSP do wyświetlania szczegółów błędu, które powróciły w odpowiedzi, ale jeśli nie jest to możliwe, chcę wyświetlić stronę HTML.

Mam nadzieję, że sens ....

+0

+1 bardzo dobre pytanie –

+0

Czy możesz opracować sytuację "na wpół martwego"? –

+0

@HardikMishra Edytowałem pytanie, aby lepiej się wytłumaczyć. Zobacz akapit drugi. – Malki

Odpowiedz

1

znalazłem rozwiązanie:

  1. Define błąd 500 przekierować do serwletu (zamiast strony)
  2. definiują także stronę błędu 404 - sprawiają, że prosta strona HTML.
  3. W serwlecie przekieruj do strony błędu 500 w JSP.
  4. Cała logika serwletu jest otoczona blokiem try-catch. Blok catch ma wartość response.sendError(HttpServletResponse.SC_NOT_FOUND);, która przekieruje do strony błędu 404 zdefiniowanej w pliku web.xml.
0

pewnością mogę wyobrazić sobie scenariusz, w którym swoje error.jsp wymaga pewnych funkcji z serwera, a serwer nie spełnia, że ​​(np tracisz połączenie z db , pojawi się błąd, error.jsp jest wyzwalany, ale , że wymaga połączenia db z jakiegoś powodu - być może rejestrując błąd lub dostarczając dane kontaktowe?).

Z tego powodu sam chciałbym zachować error.jsp stosunkowo proste i niezależne.

+0

Zgadzam się na utrzymanie tego w prosty sposób, ale czy istnieje sposób, aby upewnić się, że w przypadku błędu w renderowaniu strony JSP aplikacja przekieruje się na prostszą stronę błędów HTML? – Malki