2011-11-15 15 views
10

Jak powiedział w w tytule, chcę zmienić domyślną stronę błędu w Tomcat i zrobił:Czy istnieje sposób konfiguracji użycia JEDNEJ strony błędów niestandardowych dla WSZYSTKICH kodów błędów w web.xml tomcat?

<error-page> 
    <error-code>500</error-code> 
    <location>/error_500.html</location> 
</error-page> 

<error-page> 
    <error-code>404</error-code> 
    <location>/error_404.html</location> 
</error-page> 

Czy możliwe jest wykorzystanie kodów błędów wieloznacznych jak

<error-page> 
    <error-code>*</error-code> 
    <location>/error.html</location> 
</error-page> 

?

(Powyższy przykład nie działa, ale jest jakiś inny sposób?)

Dzięki

+0

Sposób, w jaki czytałem zakres "zdefiniowany przez społeczność" powyżej, uważam za błędne zamknięcie tego pytania jako tematu wyłączonego. Pytanie dotyczy zarówno "narzędzi programowych powszechnie używanych przez programistów", jak i "praktycznego, odpowiedzialnego problemu, który jest unikalny dla tworzenia oprogramowania". W razie wątpliwości moderatorzy powinni zdecydować się na pozostawienie otwartego, a nie bliskiego, aby stały się trafny dla nas użytkowników (w oparciu o pogląd, że jeśli użytkownik myśli, że pytanie jest na tyle istotne, aby zadać mu pytanie, lepiej pozostawić go otwartym, aby inni mogli się przyczynić do tego nie). Moje dwa centy. –

Odpowiedz

10

Nie, nie ma sposobu, w Tomcat.

Servlet 3.0 specyfikacji wspiera globalną stronę błędu w następujący sposób:

<error-page> 
    <location>/error.html</location> 
</error-page> 

więc teoretycznie powinien działać przynajmniej Tomcat 7.0. Ale nie jest poprawnie implementowany w Tomcat 7.0. Wcześniej o tym pisałem: issue 52135, ale zaprzeczyli. Działa jednak na innych kontenerach Servlet 3.0.

Można jednak obejść ten problem, implementując klasę specyficzną dla Tomcat ErrorReportValve, którą następnie rejestruje się jako <Host errorReportValveClass>.

+0

Dziękuję bardzo. Przeczytałem również Twój problem z Bugzillą oraz komentarze i podwójnie sprawdzone specyfikacje xsd. Niestety nie ma więcej komentarzy na temat twoich wypowiedzi na temat opcjonalnego użycia kodu błędu lub wyjątku. Czy uważasz, że warto ponownie otworzyć ten problem? –

+1

Możesz to zrobić. Doświadczyłem, że twórcy Tomcat są bardzo złośliwi, jeśli chodzi o raporty o błędach związane z niezgodnością specyfikacji Servlet. Zgłaszałem już kilka podobnych problemów związanych ze specyfikacją Servlet; częściej niż były natychmiast zamykane jako nieważne (zwłaszcza przez Marka Thomasa), a jakiś czas później zostały one ponownie otwarte i naprawione. To kwestia czasu :) – BalusC

+2

Zauważ, że Tomcat [wydanie 52135] (https://issues.apache.org/bugzilla/show_bug.cgi?id=52135) został rozwiązany (i zostanie uwzględniony w Tomcat 7.0.29). –

Powiązane problemy