Uploaded image for project: 'Tiles'
  1. Tiles
  2. TILES-522

Performance of TemplateAttributeRender in Tomcat

    Details

    • Type: Task
    • Status: Closed
    • Priority: Minor
    • Resolution: Won't Fix
    • Affects Version/s: 2.2.2
    • Fix Version/s: None
    • Component/s: tiles-core
    • Labels:
    • Environment:

      Java6, Java7, Tomcat6

    • Flags:
      Patch

      Description

      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 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); }

      }

      I doubt that this is an appropriate patch to apply, it hides superclass functionality, but maybe there is a better place to apply it?

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              michaelsembwever mck
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: