Tomcat hosting, like most Java web hosting of the 2000s, used to mean a shared account with a control panel that let you upload a WAR. That market has shrunk, and some shared hosts that still advertise it list Tomcat 7 or 8.5, both past end of life. The modern routes are a cloud platform with Tomcat built in, a Docker image you build yourself, or a virtual machine. Which one fits depends mostly on how much server work you want to do. Figures checked in November 2026.
Pick the Tomcat version first
The version decides whether your app runs at all, because of a namespace change in the middle of the line. Tomcat 9.0 implements Servlet 4.0 with the old javax.servlet packages. From Tomcat 10 on, everything moved to jakarta.servlet. A WAR compiled for one will not start on the other without changes.
| Tomcat branch | Latest release | Servlet spec | Minimum Java | Status |
|---|---|---|---|---|
| 11.0.x | 11.0.27 | 6.1 (Jakarta EE 11), Pages 4.0 | 17 | Supported |
| 10.1.x | 10.1.61 | 6.0 (Jakarta EE 10) | 11 | Supported, no end date published |
| 9.0.x | 9.0.123 | 4.0 (javax, Java EE 8) | 8 | Supported until 31 March 2027; 9.1.x follows until 31 December 2030 |
| 10.0.x | 10.0.27 | 5.0 | - | End of life October 31, 2022 |
| 8.5.x | 8.5.100 | 3.1 | - | End of life March 31, 2024 |
For a new project, Tomcat 11 on Java 21 or 25 is the obvious choice. For a legacy app with javax imports, Tomcat 9 buys time: Apache ends support for 9.0.x on 31 March 2027 and plans a 9.1.x branch, with minimal changes, that receives releases until 31 December 2030. Moving later means rewriting imports to jakarta.* and upgrading libraries that depend on the old packages. The Java version timeline shows how long each JDK is supported by each vendor.
Clouds with Tomcat built in
Three providers let you upload a WAR and handle the container for you.
AWS Elastic Beanstalk has Tomcat platforms on Amazon Linux 2023, including one with Corretto 25 and Tomcat 11.0.27, next to plain Java SE platforms for Corretto 25, 21 and 17. Beanstalk itself costs nothing; you pay for the EC2 instances, load balancer and storage it creates. That makes the price depend on the instance size you choose, and it is easy to start a load-balanced environment by accident when a single instance would do.
Azure App Service on Linux offers Java SE, Tomcat and JBoss EAP as built-in stacks. The Basic B1 plan has 1 core and 1.75 GB of RAM for about $12.41 a month in East US (an hourly list price of $0.017 over 730 hours). Azure's App Service SLA lists 99.95% for paid tiers. The free F1 plan exists but is capped at 60 CPU minutes a day and is not supported for production.
Clever Cloud, a French provider, has a dedicated Java + WAR runtime alongside Maven, Gradle and Play. Its smallest Java instance, pico with 256 MiB, costs about EUR 4.56 a month at the hourly rate, and nano with 512 MiB about EUR 6.08. Billing is per second from prepaid credit or monthly invoice, and you can pay by card, PayPal or SEPA direct debit. For a JSP hosting setup that needs a European data center, this is the most direct option.
Tomcat in a container on any platform
Platforms like Render, Railway, Koyeb, Fly.io, Northflank and Google Cloud Run do not know what a WAR is, but they run Docker images. The official Tomcat images on Docker Hub do the heavy lifting:
FROM tomcat:11.0-jdk25-temurin
COPY target/app.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
Naming the file ROOT.war serves the app at / instead of /app/. Tags such as 11.0-jdk21, 10.1-jdk21 and 9.0-jdk17 exist for other combinations. This route gives you the widest choice of Java web hosting, including free tiers, at the cost of a slightly larger image and a longer cold start than a fat JAR. The Java hosting comparison lists price, memory and sleep rules for each of these platforms, and the free Java hosting overview covers the ones that cost nothing.
Memory is the number to watch. Tomcat plus a typical web app is uncomfortable in 256 MB and workable in 512 MB with a capped heap. Set the limit through the CATALINA_OPTS or JAVA_OPTS environment variable rather than letting the JVM guess.
Tomcat on a plain virtual machine
A VM is the old way and often the cheapest. You install a JDK, download Tomcat, create a systemd service and put a reverse proxy such as nginx in front for TLS.
- Hetzner Cloud: the Arm CAX11 has 2 vCPUs, 4 GB of RAM and 40 GB of storage from EUR 6.49 a month, with at least 20 TB of traffic in EU locations.
- AWS Lightsail: $5 a month for 0.5 GB of RAM and 2 vCPUs, or $3.50 for an IPv6-only bundle with the same specs.
- Oracle Cloud Always Free: Arm instances up to 2 OCPUs and 12 GB RAM at no cost, with a card required at sign-up and a rule that idle instances may be reclaimed.
Four gigabytes on Hetzner leaves room for several Tomcat apps and a database, which no managed platform matches at that price. You take on patching, backups and monitoring, though. The deployment guide covers the VM setup from JDK install to the proxy config.
Alternatives to Tomcat
Tomcat is not the only servlet container, and sometimes another fits better. Eclipse Jetty 12.1 (release 12.1.14) supports Servlet 3.1 through 6.1 in one server, covering both javax and jakarta apps, which can help during a slow migration. For full Jakarta EE with CDI, JPA and transactions, WildFly 42 is compatible with Jakarta EE 11 on Java 17 and 21, and Eclipse GlassFish 8.0.5 claims full EE 11 compliance on Java 21. All of them run in a container on the same platforms listed above.
One thing old-style JSP hosting did well was letting dozens of small JSP sites share one server. That is still possible with a single Tomcat on a VM and several WARs in webapps/, each on its own context path. Few managed platforms bother to offer it anymore.
Sources
- tomcat.apache.org/tomcat-9.0.x-eos.html
- tomcat.apache.org/whichversion.html
- jakarta.ee/specifications/servlet
- docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html
- aws.amazon.com/elasticbeanstalk/pricing
- learn.microsoft.com/en-us/azure/app-service/configure-language-java-deploy-run
- azure.microsoft.com/en-us/pricing/details/app-service/linux
- clever.cloud/pricing
- jetty.org/download.html
- wildfly.org/news/2026/10/22/WildFly-42-is-released
- hub.docker.com/_/tomcat
- hetzner.com/cloud/cost-optimized
- aws.amazon.com/lightsail/pricing
- docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm