3.3.0-RC1
Pre-releaseRelease candidate for 3.3.0 — Java 17+, Jakarta EE 11 (Servlet 6.1), Jetty 12, Tomcat 11, Spring Boot 4.x.
Available on Maven Central:
runtimeOnly 'org.sitemesh:sitemesh:3.3.0-RC1'
runtimeOnly 'org.sitemesh:spring-boot-starter-sitemesh:3.3.0-RC1'Heads-up for Spring Boot users upgrading from 3.2.x
The starter's default integration is now the Spring MVC view-resolver rather than the servlet filter. Decoration happens inside view rendering, which avoids the response-buffering and forward() pitfalls of filter-based decoration on Tomcat 11+ (and makes it work with frameworks like Grails). If your app relied on the filter — decorating static .html files or other non-MVC content — set sitemesh.integration=filter to restore the previous behavior. See CONFIGURATION.md.
Changes since 3.3.0-M3
Spring Boot starter, view-resolver integration
SiteMeshViewResolvernow takes itsServletContextfrom the container viaServletContextAwareinstead of aRuntimeBeanReference. The old wiring referenced a bean that only exists once the web server starts, so Spring's ahead-of-time processing failed the whole run withNoSuchBeanDefinitionException: No bean named 'servletContext' available.- A custom
siteMeshViewResolverClassdeclaring only the previous four-argument constructor keeps working — the servlet context is wired only for a resolver class that declares no constructor without it. - The servlet-context-free constructor check now requires the canonical three-argument signature exactly rather than any assignable one, so a resolver declaring a narrower overload is no longer misread as context-free.
Performance
- Response buffers are sized from what previous renders of the same view measured, and
Buffer.toCharBuffer()no longer makes a defensive copy. Measured on a 50 KB page over 40,000 requests: allocation per request down ~30%, young collections down ~29%. Throughput is unchanged — this reduces GC work and peak transient footprint, not latency.
Dependencies and examples
- Gradle 9.7.0, plus Jetty, log4j, Micronaut (platform 5.1.1), Struts (7.3.0) and Javalin (7.2.3) updates.
- Example fixes: the Javalin example's page now carries a title of its own.
Please report anything that regressed against 3.2.x or 3.3.0-M3 before 3.3.0 ships.
What's Changed
- Size render buffers from what previous renders measured by @codeconsole in #154
Full Changelog: 3.3.0-M3...3.3.0-RC1