Performance of TemplateAttributeRender in Tomcat
------------------------------------------------

                 Key: TILES-522
                 URL: https://issues.apache.org/jira/browse/TILES-522
             Project: Tiles
          Issue Type: Task
          Components: tiles-core
    Affects Versions: 2.2.2
         Environment: Java6, Java7, Tomcat6
            Reporter: Mck SembWever
            Priority: Minor


TeamplateAttributeRender.write(..) boils down to using 
JspRuntimeLibrary.include(..)

In Tomcat-6 this involves wrapping the request and response (a number of 
times?) and going through security checks (again and again and again...).

At FINN.no, norway's second largest website, we're getting scores of requests 
per second per jvm and seeing this method becoming a bottleneck, mainly due to 
thread contention in the security checks.

The method can be sped up by calling, if possible, requestDispatcher.include(..)

For example we have overridden TemplateAttributeRender like

    public void write(
            final Object template,
            final Attribute attribute,
            final TilesRequestContext request) throws IOException {

        if(request instanceof JspTilesRequestContext && template instanceof 
String){
            try {
                ((JspTilesRequestContext) request)
                        .getPageContext()
                        .getServletContext()
                        .getRequestDispatcher((String)template)
                        .include((ServletRequest) request.getRequest(), 
(ServletResponse) request.getResponse());
            } catch (ServletException ex) {
                throw new TilesIOException(ex);
            }
        }else{
            super.write(template, attribute, request);
        }
    }


Maybe it's possible to apply this code? Or better yet maybe there's a better 
place to apply it? (I've created the issue to spawn the discussion...i'm not 
totally convince myself this is code that should be committed...)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to