History

SiteMesh was originally written about 6 years ago, after Joe Walnes downloaded the first sun servlet engine and wrote it using servlet chains (before filters).

He had been using it internally for about 2 years and by the time it was open sourced it was quite mature. Over the years, the basic design remained the same; content was intercepted, parsed, a decorator mapper was used to find a decorator and they were merged together.

The original version used a bunch of regular expressions to extract the necessary chunks of text from the document. This was easy to get running, but very error prone as the matches had no context about where they were in a document. For example, a <title> element in a <head> block is very important to SiteMesh, however sometimes they appear elsewhere, such as in a comment, <script> or <xml> block.

This was dumped, in favour of a DOM based parser, which initially used JTidy to convert HTML to XHTML so it could be traversed as a standard DOM tree. Much nicer, but very, very sloow. Too slow, so sitemesh was switched to use OpenXML, an XML parser that was tolerant to nasty HTML, giving a slight boost to performance.

By this time, SiteMesh had been open-sourced, and along came Victor Salaman, who was the third user to discover it (after Mike Cannon-Brookes and Joseph Ottinger). He saw the potential but hated the parser. About three hours later, he'd produced his own version that used low-level string manipulation. It wasn't pretty, but it was very, very fast - twelve times faster than the OpenXML one, with the bonus feature of not rewriting great chunks of the document. This brought SiteMesh into the mainstream as it was now ready for use on high-traffic sites. 1.0 was released.

There were 2 main leaps that helped make it successful - the rewrite from servlet-chain to servlet-filter when the first draft of the Servlet 2.3 API came out and Victor Salaman rewriting the parser to make it about 12 times faster. In December 2003, Chris Miller and Hani Suleiman improved the parser to make it again 6 times faster and further minimize memory usage.

The SiteMesh Crew

For any inquiries involving SiteMesh, please send an email to users@sitemesh.dev.java.net.

Who's using SiteMesh? What sites are using Sitemesh?

The following companies use (develop J2EE applications using) SiteMesh:

The following sites use SiteMesh:

Are you using Sitemesh? Please let us know, so that we can include you in this list!