amyroh 2003/02/13 12:52:09 Modified: catalina/src/share/org/apache/catalina/valves ErrorDispatcherValve.java Log: Back port patch from tomcat 5 to look up <error-page> for 500. Revision Changes Path 1.10 +26 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ErrorDispatcherValve.java Index: ErrorDispatcherValve.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ErrorDispatcherValve.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ErrorDispatcherValve.java 15 Aug 2002 23:51:14 -0000 1.9 +++ ErrorDispatcherValve.java 13 Feb 2003 20:52:09 -0000 1.10 @@ -254,6 +254,20 @@ log("Exception Processing " + errorPage, e); } } + } else { + // A custom error-page has not been defined for the exception + // that was thrown during request processing. Check if an + // error-page for error code 500 was specified and if so, + // send that page back as the response. + ServletResponse sresp = (ServletResponse) response; + if (sresp instanceof HttpServletResponse) { + ((HttpServletResponse) sresp).setStatus( + HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + // The response is an error + response.setError(); + + status(request, response); + } } } @@ -381,7 +395,14 @@ try { // Reset the response if possible (else IllegalStateException) - hres.reset(); + //hres.reset(); + // Reset the response (keeping the real error code and message) + Integer statusCodeObj = + (Integer) hreq.getAttribute(Globals.STATUS_CODE_ATTR); + int statusCode = statusCodeObj.intValue(); + String message = + (String) hreq.getAttribute(Globals.ERROR_MESSAGE_ATTR); + ((HttpResponse) response).reset(statusCode, message); // Forward control to the specified location ServletContext servletContext =
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]