Servlet Container Support Policy

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

Why?

Jenkins typically runs 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. However, 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. (Weekly 2.474, LTS 2.462.3, and older)

  • WildFly 26, based on Servlet API 4.0 (Jakarta EE 8) with javax.servlet imports. (Weekly 2.474, LTS 2.462.3, and older)

  • Other servlet containers that are based on Servlet API 4.0 (Jakarta EE 8) with javax.servlet imports. (Weekly 2.474, LTS 2.462.3, and older)

  • Jetty 11 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.475, LTS 2.479.1, and newer)

  • Tomcat 10 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.475, LTS 2.479.1, and newer)

  • WildFly 27 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.475, LTS 2.479.1, and newer)

  • Other servlet containers that are based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.475, LTS 2.479.1, and newer)

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. (Weekly 2.474, LTS 2.462.3, and older)

  • Tomcat 10 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.474, LTS 2.462.3, and older)

  • WildFly 27 or later, based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.474, LTS 2.462.3, and older)

  • Other servlet containers that are based on Servlet API 5.0 (Jakarta EE 9) or later with jakarta.servlet imports. (Weekly 2.474, LTS 2.462.3, and older)

Support for Jakarta EE 8 is planned to end with the October LTS release.

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.



Was this page helpful?

Please submit your feedback about this page through this quick form.

Alternatively, if you don't wish to complete the quick form, you can simply indicate if you found this page helpful?

    


See existing feedback here.