// Get the FilterChain Here
ApplicationFilterFactory factory = ApplicationFilterFactory.getInstance();
ApplicationFilterChain filterChain = factory.createFilterChain(request,
wrapper,servlet);
CoyoteRequestFacade requestFacade = state.wrapRequest.getRequestFacade();
// Call the service() method for the allocated servlet instance
try {
String jspFile = wrapper.getJspFile();
if (jspFile != null) {
request.setAttribute(Globals.JSP_FILE_ATTR, jspFile);
}
support.fireInstanceEvent(InstanceEvent.BEFORE_DISPATCH_EVENT,
servlet, request, response);
// for includes/forwards
/* IASRI 4665318
if ((servlet != null) && (filterChain != null)) {
*/
// START IASRI 4665318
if (servlet != null) {
// END IASRI 4665318
// START OF S1AS 4703023
requestFacade.incrementDispatchDepth();
if (requestFacade.isMaxDispatchDepthReached()) {
throw new ServletException(sm.getString(
"applicationDispatcher.maxDispatchDepthReached",
new Object[] { Integer.valueOf(
CoyoteRequest.getMaxDispatchDepth())}));
}
// END OF S1AS 4703023
/* IASRI 4665318
filterChain.doFilter(request, response);
*/
// START IASRI 4665318
if (filterChain != null)
filterChain.doFilter(request, response);
else {
ApplicationFilterChain.servletService(request, response,
servlet, support);
}
// END IASRI 4665318
}
// Servlet Service Method is called by the FilterChain
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
} catch (ClientAbortException e) {
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
ioException = e;
} catch (IOException e) {
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
log(sm.getString("applicationDispatcher.serviceException",
wrapper.getName()), e);
ioException = e;
} catch (UnavailableException e) {
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
log(sm.getString("applicationDispatcher.serviceException",
wrapper.getName()), e);
servletException = e;
wrapper.unavailable(e);
} catch (ServletException e) {
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
Throwable rootCause = StandardWrapper.getRootCause(e);
if (!(rootCause instanceof ClientAbortException)) {
log(sm.getString("applicationDispatcher.serviceException",
wrapper.getName()), rootCause);
}
servletException = e;
} catch (RuntimeException e) {
support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT,
servlet, request, response);
log(sm.getString("applicationDispatcher.serviceException",
wrapper.getName()), e);
runtimeException = e;
// START OF S1AS 4703023
} finally {
requestFacade.decrementDispatchDepth();
// END OF S1AS 4703023
}
// Release the filter chain (if any) for this request
try {