OpenSymphony Releases SiteMesh 2.0


News: OpenSymphony Releases SiteMesh 2.0

  1. OpenSymphony Releases SiteMesh 2.0 (6 messages)

    SiteMesh is a web-page layout system and web-application integration system to aid in creating large sites consisting of many pages for which a consistent look/feel, navigation and layout scheme is required.

    After a long period of bug-fixing, the OpenSymphony team is proud to present you SiteMesh 2.0.

    You can download it here. Check README.txt for an overview of the changes.

    SiteMesh is covered in some detail in Java Open Source Programming

    -- Changes from 1.5 --
    - SiteMesh now hosted at

    - FastPageParser performance improvements.

    - DTD location has changed; now

    - API change in Decorator (check your custom written Decorator classes):
      Added new method getRole() to enable role based decorators.

    - Updated documentation to align with new Opensymphony Website.

    JIRA bugs/tasks fixed (
        SIM-16 Tomcat IllegalStateException
        SIM-41 NoSuchMethodException with Orion
        SIM-2 Response bug on WebLogic 6.1
        SIM-13 Tomcat4 throws IOException after response.sendRedirect()
        SIM-29 WebLogic 7 doesn't work
        SIM-40 Let properties be retrieved programatically
        SIM-27 Example apps don't work in Pramati
        SIM-17 Can't set headers from decorator page.
        SIM-8 body tag not correctly parsed
        SIM-56 Decorator taglibs allowed to contain body
        SIM-37 role based decorators
        SIM-46 Place TLDs in Jar file.
  2. This looks interesting like XSLT looked interesting but is it really possible to do all this work on every page view and still make large, scalable websites? How much overhead above JSP pages is something like this?
  3. Sitemesh performance[ Go to top ]

    Sitemesh should be a LOT faster than using XSLT, since Sitemesh is optimized purely for parsing + decorating HTML.

    For the 2.0 release we did some profiling on the (already fast) FastPageParser class and managed to raise the performance by 25% - 100% when parsing in a high-load situation. In practice this means that a small HTML page (~5k) will now parse in a couple of milliseconds, while large pages (60k) parse in around 10ms on an Athlon XP 1800+ (JDK 1.4.2_02).

    There is of course still some extra overhead involved in running through the filter and assembling the final output via the JSP tags. The quality of your servlet container has an impact here, but I'm still planning on doing some profiling to tune this side of things a little further too.

    But to summarize, Sitemesh is no slouch and if you're serving anything heavier than light JSP files it's unlikely to be a scalability bottleneck.
  4. org.apache.jasper.JasperException: getOutputStream() has already been called for this response
    at org.apache.jasper.servlet.JspServletWrapper.service(
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(
    at org.apache.jasper.servlet.JspServlet.service(
  5. Andy, can you please post a followup to the sitemesh mailing list ( where someone will hopefully be able to help you.

    In particular, can you let us know what version of Tomcat you are running, and what examples you are trying to use? There have been bugs in several (older?) versions of Tomcat that have prevented Sitemesh from working correctly.
  6. I also encountered the same issue when I tried to run sitemesh-example.war under jboss-3.2.2(tomcat 4.1.27). Thanks.
  7. I also encountered the same issue when I tried to run sitemesh-example.war under jboss-3.2.2(tomcat 4.1.27). Thanks.

    So did I :-(.

    Ganesh Prasad