import javax.servlet.http.HttpServlet; //导入方法依赖的package包/类
public void execute(String path, OutputStream os, boolean isJobRequest) throws ServletException, IOException {
try {
ArrayList filters = new ArrayList();
XSLWebFilterConfig emptyConfig = new XSLWebFilterConfig();
Filter filter;
filter = new SetCharacterEncodingFilter();
XSLWebFilterConfig config = new XSLWebFilterConfig();
config.addInitParameter("encoding", "UTF-8");
filter.init(config);
filters.add(filter);
filter = new WebAppFilter();
filter.init(emptyConfig);
filters.add(filter);
filter = new RequestSerializerFilter();
filter.init(emptyConfig);
filters.add(filter);
filter = new PipelineGeneratorFilter();
filter.init(emptyConfig);
filters.add(filter);
filter = new CachingFilter();
filter.init(emptyConfig);
filters.add(filter);
HttpServlet servlet = new XSLWebServlet();
servlet.init();
XSLWebFilterChain filterChain = new XSLWebFilterChain(servlet, filters.toArray(new Filter[filters.size()]));
ServletContext servletContext = Context.getInstance().getServletContext();
ServletRequest request = new XSLWebHttpServletRequest(servletContext, path);
ServletResponse response = new XSLWebHttpServletResponse(os);
WebApp webApp = null;
if (isJobRequest) {
webApp = WebAppFilter.getWebApp(request);
if (webApp != null) {
webApp.incJobRequestCount();
}
}
try {
filterChain.doFilter(request, response);
} finally {
if (webApp != null) {
webApp.decJobRequestCount();
}
}
} catch (Exception e) {
logger.error("Error executing internal servlet request to \"" + path + "\"", e);
throw e;
}
}