Skip to content

3.3.0-RC1

Pre-release
Pre-release

Choose a tag to compare

@codeconsole codeconsole released this 19 Aug 20:41
· 2 commits to master since this release

Release 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

  • SiteMeshViewResolver now takes its ServletContext from the container via ServletContextAware instead of a RuntimeBeanReference. 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 with NoSuchBeanDefinitionException: No bean named 'servletContext' available.
  • A custom siteMeshViewResolverClass declaring 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