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]