On 5/19/06, Mark Thomas <[EMAIL PROTECTED]> wrote:
The RequestDispatcher is created in this class: http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java ApplicationDispatcher implements RequestDispatcher http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java The wrapper that checks if it is included before calling sendError is http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationHttpResponse.java HTH, Mark
Thanks for your help. Acording to the API, sendError from the *included servlet* will be ignored. I think maybe this doesn't necessarily mean *Tomcat itself* can't do it. If i'm trying to include a resource not existed after the response being committed, the error message will be appended to the response, and sendError be ignored. Here's the snippet from http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java : if (requestUri == null) { requestUri = request.getRequestURI(); } else { // We're included, and the response.sendError() below is going // to be ignored by the resource that is including us. // Therefore, the only way we can let the including resource // know is by including warning message in response response.getWriter().write( sm.getString("defaultServlet.missingResource ", requestUri)); } response.sendError(HttpServletResponse.SC_NOT_FOUND, requestUri); If the response has already been committed, doing that will get a 404 error page returned to the client, that means Tomcat set this status somewhere else, or from some wrapper, but I failed to find it. Any idea? Best Regards Stephen