Tiles
  1. Tiles
  2. TILES-522

Performance of TemplateAttributeRender in Tomcat

    Details

    • Type: Task Task
    • Status: Closed
    • Priority: Minor 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?

      1. TILES-522.patch
        0.9 kB
        Mck SembWever

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Mck SembWever
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development