Apache Tomcat is an open-source implementation of the Jakarta Servlet, Pages, Expression Language, and WebSocket specifications, serving as a container for running Java web applications. It provides a modular architecture with a servlet container, connector abstraction for multiple I/O models, and a pipeline-based request processing system that handles cross-cutting concerns through composable components.
The server supports container-managed security with configurable realms for authentication against JDBC, LDAP, or memory-based credential stores, and offers TLS encryption with optional OpenSSL acceleration. It enables high-availability clustering through session replication across multiple nodes, and supports virtual hosting with SNI-based TLS routing for serving multiple domain names from a single instance. Web applications can be deployed, undeployed, and managed through built-in management interfaces or Ant task integration.
Tomcat includes support for WebSocket-based real-time communication, JSP compilation at runtime or ahead of time, and server-side includes for dynamic content insertion into static pages. It provides JDBC connection pooling exposed as JNDI resources, JMX-based monitoring and management, and configurable logging. The server can operate as a Windows service and supports HTTP/2, non-blocking I/O through the Apache Portable Runtime, and URL rewriting with regular expressions.