Apache Tomcat, developed by Sun Systems way back in the late 1990s, is a popular choice for developers who need to build and deploy Java-based web applications. It’s a collaboratively created platform that, since 2005, has become an accredited top-level Apache project with highly experienced developers volunteering support and resources for it.
A 2022 survey shows that 48% of developers now utilize Apache Tomcat for deploying Java web applications. But what is Apache Tomcat server, and how does it work?
What is Apache Tomcat?
Apache Tomcat is a free, open-source Java servlet container. Servlet containers are software components that provide a runtime environment for Java servlets. A Java servlet is a Java class that can be used to extend the functionality of a web server. This might involve generating dynamic content, processing requests, or handling other tasks typically performed by a web server. Java servlets also define how the server should handle requests and how to respond to those requests. The Java servlet container manages the lifecycle of servlets, including loading and unloading them.
Java servlet containers may be used in combination with other web servers to provide a more complete runtime environment for the deployment of Java-based web applications. Apache Tomcat also provides additional services such as security and resource management.
Is Apache Tomcat a web server or an application server? In truth, it’s neither. Web servers deliver static content, such as a home page, an image, or a video. Application servers, conversely, deliver dynamic content, such as personalization of web pages and interactive chat options. Apache Tomcat behaves like an application server because it can deliver highly dynamic content. It can also behave like a standalone web server, but it is actually a Java servlet container. As such, it does not have the features of a full application server, and may not support some enterprise-level requirements.
The latest release of Apache Tomcat server is 10.0.13, which was launched on the 25th August 2023.
Core Apache Tomcat Components
The primary component of Apache Tomcat is the servlet container, which is called Catalina. Catalina implements the required specifications for Java servlets and Jakarta Server Pages (JSP, formerly JavaServer Pages). Catalina manages the lifecycle of all the servlets in the container.
Coyote is a connector component which supports the HTTP/1.1 protocol. Coyote interprets and processes HTTP requests via processing threads, and can create additional threads if traffic increases unexpectedly. The ability to handle requests in this way is what gives Apache Tomcat the ability to be used as a standalone web server.
To be JSP compatible, servers need a JSP engine. Apache Tomcat server’s JSP engine is called Jasper 2, replacing the original Jasper which was slower and didn’t have as many features. This engine works solely to implement JSP specifications.
Another important component in Apache Tomcat server architecture is the cluster. Clusters are groups of Tomcat servers that operate in tandem, creating a single system via careful load balancing to connect servers successfully. Clustering can improve the availability of a system and boost its resilience.
How Does Apache Tomcat Work?
Now you know the basic components of Apache Tomcat, let’s take a look at how the server actually works. There are six primary steps in the lifecycle of an HTTP request to Tomcat.
- A client inputs an HTTP request
- This request goes to a web server
- The server forwards this request to the Apache Tomcat container
- The container and relevant connectors decide how to process the request
- The container generates an appropriate response
- The response goes back to the client via the web server
The configuration for how the servlet container responds to requests is held in the server.xml file. Java servlets initialize and execute JSP files if required, and the JSP engine, Jasper, executes the relevant Java code to create the response. The connector, Coyote, sends that response back, allowing the client’s web browser to fully resolve the request.
The end-user experience should be to enter a web address or click a button on a web page, and, within a few seconds, get a result that matches their request.
Advantages of Using Apache Tomcat
There are numerous advantages of using Apache Tomcat beyond the ability to create a runtime environment for Java web applications and websites. Apache Tomcat tracks all requests and increases observability across systems, although investing in Tomcat monitoring tools is essential for businesses that want to ensure they avoid bottlenecks and latency. Tomcat also provides security features including additional authentication stages and access controls that can be controlled by an administrator. This makes it ideal for organizations that have to be compliant to high standards.
Tomcat is incredibly lightweight and fast. It’s focused on efficiency so it doesn’t drain network resources. It can start up and shutdown fast, without impacting other network components.
Apache Tomcat server provides a number of configuration options that allow developers to customize the behavior of the servlet container and associated web applications. Developers can use Tomcat however they want, and can extend its practicability almost indefinitely thanks to numerous plugins and modules.
Because Tomcat was developed to implement JSP and Java APIs, it’s compatible with all Java technologies or their Jakarta equivalents. WebSockets, Expression Language, and of course, Java (or Jakarta) servlets all integrate seamlessly with Tomcat.
One of the biggest advantages for most development teams is that Apache Tomcat is completely open source and free. There is no charge, ever, for utilizing this platform and it’s entirely maintained and updated by volunteers. The community surrounding Tomcat is enormous, and there is so much support available online for developers utilizing its features.
Are there disadvantages to using Apache Tomcat? There can be, depending on what your needs are. As we mentioned earlier, Tomcat is not a full-featured web server or application server, although it can fulfil many of the same tasks. It doesn’t support some enterprise-level features, such as EJBs (Jakarta Enterprise Beans, formerly Enterprise Java Beans) or some Java APIs. For this level of functionality, developers require a full application server such as RedHat JBoss or Oracle WebLogic.
Common Apache Tomcat Use Cases
Apache Tomcat is used for website and web application deployment, and is one of the most widely utilized platforms in its arena. One app developer noted that Tomcat helped them reduce their server startup time by 11 seconds per instance compared to alternatives. They also stated that Tomcat helped keep their apps compliant and bug-free without having to resort to manual code entry.
Tomcat also helps e-commerce businesses scale up rapidly. One example of this is Walmart. Apache Tomcat empowers the retailer to handle thousands of transactions daily while providing robust, excellent online experiences for their website visitors.
Businesses looking to streamline their budget might consider Tomcat in place of a proprietary, chargeable server option. Weather.com switched to Tomcat and found they could scale up how much web traffic they could handle, plus they saved thousands of dollars by making this change.
Tomcat is the ideal choice for development environments that already utilize multiple Java-based technologies. The ease of integration can be a big time saver for busy DevOps teams. Switching to Tomcat is as simple as installing the servlet container and copying over any application files into the container’s directory.
Apache Tomcat server is the go-to servlet container for Java web applications—with good reason. Its lightweight yet robust functionality and ease of configuration make it fast to both get to grips with and deploy on your own systems. The sheer volume of support available continues to grow as more developers adopt Tomcat as a major aspect of their app deployment strategies.
It’s safe to say that while Java remains a popular choice for developers, Apache Tomcat will continue to be a top choice for creating runtime environments for Java web applications.