We are announcing the upgrade of the RPM packaged version of Apache Tomcat in Red Hat Enterprise Linux (RHEL) 10 from Apache Tomcat version 9.0 to version 10.1. This upgrade introduces many changes, most notably the switch from the Java EE namespace to Jakarta EE required by the Jakarta EE 9 release. This article will help developers and system administrators that create or deploy applications understand the changes required by this upgrade, and offer a temporary solution to make moving to RHEL 10 easier for your organization.
Why upgrade?
Although community support for Apache Tomcat version 9 stream will continue for the foreseeable future, we have upgraded to provide the latest and greatest Apache Tomcat version stable at the time of RHEL 10.0 development. As support for older versions of Java becomes less available, we want to enable our users to take advantage of the new Java runtimes for their workloads.
How to get started
Alongside the Tomcat version upgrade, we have introduced the tomcat-jakartaee-migration tool package, a new package you can use to make the migration easier. This installed package is a weak dependency of the Tomcat package and exists to easily migrate your Java EE application to the Jakarta EE namespace. To use this new tool, you should either run the CLI version or utilize the migration at deploy time by putting your application to the legacyAppBase (defaults to webapps-javaee).
That’s it! Barring any issues with the migration (noted when you run the CLI tool or in the tomcat logging), your application deploys on Tomcat using the Jakarta EE namespace.
Note: Proprietary software may restrict the migration tool because it manipulates bytecode. Please carefully review the licenses to ensure it’s safe to use.
You can learn more about the differences between Apache Tomcat version 9 and 10 by visiting the project website.
A temporary workaround
Given this upgrade happened after the RHEL 10.0 Beta release, we offer a more concrete way to make the transition to RHEL 10.0 as easy as possible. The tomcat9 package provides temporary support for the Apache Tomcat 9.0 stream through Nov 2026. This package will conflict with the Tomcat package, so you cannot install them simultaneously.
Support for the tomcat9 package will not continue after the RHEL 10.3 release, and users are expected to complete migration to the Tomcat package at that time. To complete the migration to Tomcat version 10, you’ll need to switch from tomcat9 to Tomcat using dnf swap tomcat9 tomcat --allowerasing which replaces the tomcat9 package with Tomcat version 10.
Then you’ll need to update your application namespaces from javax.* to jakarta.* You can use the migration tool CLI to help recompile and redeploy them to /var/lib/tomcat/webapps/. This is the preferred option. Otherwise, you can use the tomcat-jakartaee-migration tool to do a static conversion when the application is deployed from /var/lib/tomcat/webapps-javaee/. Once you redeploy your apps, you can restart Tomcat to finish the migration.
Future plans
Going forward, we expect to be better aligned with what’s available in Fedora before CentOS Stream and RHEL branches and to deliver a more cutting edge version of Apache Tomcat. This update was a special change due to the nature of the Java EE to Jakarta EE namespace changes and attempts to make the transition between RHEL versions as smooth as possible.
There are no plans to update the tomcat package version from version 9 to version 10 in RHEL 9 at this time.
Migrating your applications from Apache Tomcat 9 to 10.1 should be relatively straightforward with the provided tooling, but feel free to utilize the tomcat9 package as a temporary alternative, if needed. Please start testing your application with the Tomcat version 10.1 package as soon as possible and let us know about any issues that arise, so that we can address them.