Apache Tomcat

Apache Tomcat — Free Download. Java web server
Apache Tomcat is a software implementation that runs web applications developed with Java technologies. It provides an environment for servlet code and JavaServer Pages. This web container manages HTTP requests, processes business logic, and generates dynamic responses. Many organizations use Tomcat for enterprise systems due to its performance and adaptability.
5.0(1 ratings)

Download Apache Tomcat (Official links)
File size: 13 MB
The latest version of Apache Tomcat is: 11.0.0
Operating system: Windows
Languages: English
Price: $0.00 USD

  • Servlet Container. Provides a runtime environment for Java Servlets. Servlets are server-side components that extend the capabilities of web servers. The container handles the complete lifecycle of Servlets, from their loading and initialization to request management and eventual destruction.
  • JSP Engine (JavaServer Pages). Translates JSP pages into Servlet code and compiles them. It enables the creation of dynamic web content by mixing HTML elements with snippets of Java code. The engine interprets directives, declares standard and custom actions, and manages tag libraries.
  • HTTP/HTTPS Connectors. Implements the HTTP/1.1 and HTTPS protocols for client-server communication. Connectors, such as NIO and APR, handle network connections, request parsing, and response construction. They configure ports, timeouts, buffer sizes, and performance parameters.
  • Session Management. Offers mechanisms to maintain user session state across multiple HTTP requests. It stores session data in memory, with optional disk persistence or cluster replication. Implements session cookies and URL rewriting for session tracking.
  • JDBC Connection Pool. Manages a reusable set of database connections. The pool reduces the overhead of opening and closing connections for each request. It configures parameters such as the minimum and maximum number of connections, timeout, and validation queries.
  • Realm and Authentication System. Provides authentication and authorization methods for web applications. Realms integrate with data sources like LDAP, JDBC, or MemoryRealm to verify credentials. Supports BASIC, DIGEST, FORM, and CLIENT-CERT authentication schemes.
  • Application Deployer. Enables the installation, updating, and removal of web applications (WAR files or deployed directories). Deployment can be done automatically from the webapps folder, via the web-based manager, or through XML configuration on the server.
  • Cluster Support. Facilitates the configuration of multiple Tomcat instances for horizontal scalability and high availability. Includes session replication between nodes to maintain user state and load balancing capabilities. Communication between nodes is done via multicast or TCP.
  • Logging System. Generates detailed logs of server activity, application access, and errors. It uses the Java Logging library (JULI) which can integrate with frameworks like Log4j or SLF4J. Configures log levels, output formats, and destinations (file, console).
  • Valves and Filters. Offers interceptor components that process requests and responses globally or per application/host. Valves, such as AccessLogValve or RemoteAddrValve, enable access logging, IP filtering, and pre/post-processing. They function similarly to servlet filters but at the container level.
  • JMX Administration. Exposes internal server components as MBeans for monitoring and management via Java Management Extensions. JMX tools allow performance monitoring, runtime configuration modification, and problem diagnosis.
  • WebSocket Support. Implements the Jakarta WebSocket specification for bidirectional, real-time communication between client and server. Manages the opening, closing, and transmission of messages over persistent WebSocket connections.
  • Hierarchical ClassLoader System. Uses a hierarchy of class loaders that isolates applications from each other and from the server. The Common ClassLoader loads shared libraries, the Webapp ClassLoader loads application-specific classes, and the Server ClassLoader loads the container's classes.
  • XML Configuration. Employs XML files, such as server.xml, web.xml, and context.xml, for server and application configuration. These files define services, connectors, hosts, contexts, and specific parameters. Enables declarative and structured configuration.
  • Web Server Integration. Includes mod_jk and mod_proxy connectors for integration with front-end web servers like Apache HTTP Server or NGINX. This setup offloads static content serving to the web server and redirects dynamic requests to Tomcat, improving performance.

The development of Apache Tomcat began in 1999. James Duncan Davidson, then an engineer at Sun Microsystems, created the reference implementation of the servlet container. He donated it to the Apache Software Foundation in 1999, where it became a project within the Apache Jakarta Project. The primary development is done in the Java language. A community of volunteer developers under the umbrella of the Apache Software Foundation maintains and improves the project. Contributions follow Apache's meritocratic governance model. Major versions have evolved to support the specifications of Java EE and, subsequently, Jakarta EE.


Alternatives to Apache Tomcat: