Servlet Container Support Policy

This page documents the servlet container support policy for the Jenkins controller.

Why?

Jenkins is typically run as a standalone application in its own process. The Jenkins WAR file bundles Winstone, a Jetty servlet container wrapper, and can be started on any operating system or platform with a version of Java supported by Jenkins. This is the preferred way to deploy Jenkins and is fully supported.

Theoretically, Jenkins can also be run as a servlet in a traditional servlet container like Apache Tomcat or WildFly, but in practice this is largely untested and there are many caveats. In particular, support for WebSocket agents is only implemented for the Jetty servlet container.

Support for traditional servlet containers may be discontinued in the future.

Support levels

We define multiple support levels for servlet containers.

Support level Description Servlet containers

Level 1: Supported

We run automated testing for these servlet containers, and we intend to fix reported issues in a timely manner.

The versions of Winstone and Jetty bundled in the Jenkins WAR file.

Level 2: Patches considered

Support may have limitations and extra requirements. We do not regularly test compatibility, and we may drop support at any time. We consider patches that do not put Level 1 support at risk and do not create maintenance overhead.

  • Tomcat 9, based on Servlet API 4.0 (Jakarta EE 8) with javax.servlet imports.

  • WildFly 26, based on Servlet API 4.0 (Jakarta EE 8) with javax.servlet imports.

  • Other servlet containers that are based on Servlet API 4.0 (Jakarta EE 8) with javax.servlet imports.

Level 3: Unsupported

These versions are known to be incompatible or to have severe limitations. We do not support the listed servlet containers.

  • Jetty 11 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports.

  • Tomcat 10 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports.

  • WildFly 27 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports.

  • Other servlet containers that are based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports.

Contributing

You are welcome to propose PRs that add support or documentation for other servlet containers or to share feedback; we will appreciate your contributions! Servlet container support in Jenkins falls under the Platform Special Interest Group which has a chat, a forum., and regular meetings. You are welcome to join these channels.