# apache/tomcat

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/apache-tomcat).**

8,186 stars · 5,377 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/apache/tomcat
- Homepage: https://tomcat.apache.org
- awesome-repositories: https://awesome-repositories.com/repository/apache-tomcat.md

## Topics

`http` `java` `javaee` `network-server` `tomcat`

## Description

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.

## Tags

### Programming Languages & Runtimes

- [Jakarta EE Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/specification-implementations/jakarta-ee-implementations.md) — Implements Jakarta Servlet, Pages, Expression Language, and WebSocket specifications for running Java web applications. ([source](https://tomcat.apache.org/whichversion.html))
- [JSP Compilation Engines](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-toolchains/execution-mode-engines/ahead-of-time-kernel-compilation/ahead-of-time-compilers/jsp-compilation-engines.md) — Compiles JavaServer Pages into servlets at runtime or ahead-of-time for production deployment.
- [Jakarta Annotations](https://awesome-repositories.com/f/programming-languages-runtimes/java-annotation-processors/jakarta-annotations.md) — Implements Jakarta EE annotations for resource injection, security roles, and persistence mappings in web applications. ([source](https://tomcat.apache.org/tomcat-11.0-doc/annotationapi/index.html))
- [Ahead-Of-Time Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/ahead-of-time-compilation.md) — Pre-compiles JSP pages into Java classes for faster startup and reduced runtime overhead. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [JSP Pre-Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/ahead-of-time-compilation/jsp-pre-compilation.md) — Pre-compiles JSP pages into Java classes for faster startup and reduced runtime overhead. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Class Loader Hierarchies](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/class-loader-hierarchies.md) — Controls class loader visibility and ordering to resolve library conflicts between applications and the server. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [APR-Based Native Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/native-access-libraries/apr-based-native-libraries.md) — Leverages the Apache Portable Runtime for native I/O and OpenSSL-based TLS acceleration.
- [CDI and JAX-RS Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/specification-implementations/jakarta-ee-implementations/cdi-and-jax-rs-implementations.md) — Apache Tomcat enables Contexts and Dependency Injection and RESTful web services through standard specifications. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))

### Web Development

- [Java Web Hosting Platforms](https://awesome-repositories.com/f/web-development/java-web-hosting-platforms.md) — Serves Java web applications built on Jakarta Servlet, Pages, Expression Language, and WebSocket specifications. ([source](https://cdn.jsdelivr.net/gh/apache/tomcat@main/README.md))
- [Dynamic Content Delivery](https://awesome-repositories.com/f/web-development/web-application-hosting/dynamic-content-delivery.md) — Compiles and serves JavaServer Pages, translating them into servlets for dynamic content delivery. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Server-Side Page Compilers](https://awesome-repositories.com/f/web-development/web-application-hosting/dynamic-content-delivery/server-side-page-compilers.md) — Compiles JavaServer Pages into servlets at runtime or ahead of time for dynamic content generation. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [URL Rewrite Rules](https://awesome-repositories.com/f/web-development/url-rewrite-rules.md) — Transforms incoming request URLs and host names using regular expression rules before processing. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [Static Asset Serving](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-server-capabilities/static-asset-serving.md) — Serves static files and generates directory listings for requests not handled by registered servlets. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [WebSocket Communication](https://awesome-repositories.com/f/web-development/websocket-communication.md) — Handles WebSocket connections and messages according to the specification for real-time communication. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [WebSockets](https://awesome-repositories.com/f/web-development/websockets.md) — Handles the WebSocket protocol for real-time, bidirectional communication. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))

### Data & Databases

- [Connection Pools](https://awesome-repositories.com/f/data-databases/connection-pools.md) — Provides a configurable JDBC connection pool exposed as a JNDI DataSource for web application use. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Web Session Replication](https://awesome-repositories.com/f/data-databases/database-replication/instance-replication/web-session-replication.md) — Shares session data among multiple server instances to support failover and load balancing. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))
- [Connection Pooling](https://awesome-repositories.com/f/data-databases/high-concurrency-database-access/connection-pooling.md) — Manages a pool of database connections for efficient access to relational databases by web applications. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))
- [JNDI DataSource Configurators](https://awesome-repositories.com/f/data-databases/reactive-databases/reactive-datasource-configurators/multi-datasource-configurators/jndi-datasource-configurators.md) — Sets up JNDI-bound database connection pools so web applications can access relational data through a standard DataSource. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))
- [Session Management](https://awesome-repositories.com/f/data-databases/session-management.md) — Manages active user sessions and their associated state within a web application context. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))
- [Annotation-Based Data Source Mappings](https://awesome-repositories.com/f/data-databases/data-source-definitions/annotation-based-data-source-mappings.md) — Associates data source definitions with classes or methods using Jakarta annotations for database connectivity. ([source](https://tomcat.apache.org/tomcat-11.0-doc/annotationapi/index.html))
- [WebSocket Connections](https://awesome-repositories.com/f/data-databases/redis-clients/cluster-connectivity/message-broker-connectivity/mqtt-broker-connections/websocket-connections.md) — Supports the WebSocket protocol for real-time, bidirectional communication between client and server. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))
- [Session](https://awesome-repositories.com/f/data-databases/replication-clients/state-replication/session.md) — Replicates session state across cluster nodes using delta requests for failover and load balancing.

### DevOps & Infrastructure

- [Virtual Host Definitions](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/server-and-site-configuration/virtual-host-definitions.md) — Serves multiple domain names from a single server instance using virtual hosting. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Jakarta Servlet Containers](https://awesome-repositories.com/f/devops-infrastructure/custom-server-script-integration/embedded-servlet-integrations/jakarta-servlet-containers.md) — Implements Jakarta Servlet, Pages, Expression Language, and WebSocket specifications for running Java web applications.
- [Servlet Container Implementations](https://awesome-repositories.com/f/devops-infrastructure/custom-server-script-integration/embedded-servlet-integrations/servlet-container-implementations.md) — Implements the Jakarta Servlet specification with a modular pipeline architecture for request processing.
- [High Availability Clustering](https://awesome-repositories.com/f/devops-infrastructure/high-availability-clustering.md) — Replicates session state across multiple server nodes to enable failover and load balancing for web applications.
- [Session Replication Clusters](https://awesome-repositories.com/f/devops-infrastructure/managed-cluster-orchestration/test-cluster-deployers/production-cluster-replication/session-replication-clusters.md) — Replicates session data across multiple server nodes to enable failover and load balancing for web applications. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Session State Replicators](https://awesome-repositories.com/f/devops-infrastructure/managed-cluster-orchestration/test-cluster-deployers/production-cluster-replication/session-state-replicators.md) — Replicates session data across multiple server nodes for high availability and failover in clustered deployments.
- [Virtual Host Routing](https://awesome-repositories.com/f/devops-infrastructure/virtual-host-routing.md) — Hosts multiple domain names on a single server instance with SNI-based TLS routing and per-host management. ([source](https://tomcat.apache.org/whichversion.html))
- [Web Application Deployment](https://awesome-repositories.com/f/devops-infrastructure/web-application-deployment.md) — Deploys, undeploys, and manages Java web applications on a running server through management interfaces or Ant tasks.
- [Virtual Host Managers](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/server-and-site-configuration/virtual-host-definitions/virtual-host-analytics/virtual-host-managers.md) — Adds and removes virtual hosts on a running server without restarting using the Host Manager web application. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [SNI-Based TLS Routers](https://awesome-repositories.com/f/devops-infrastructure/virtual-host-routing/sni-based-tls-routers.md) — Routes incoming TLS connections to different virtual hosts based on the SNI extension. ([source](https://tomcat.apache.org/whichversion.html))

### Networking & Communication

- [Pipeline-Based](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/request-processing-architectures/request-processing/pipeline-based.md) — Processes requests through a valve-based pipeline for cross-cutting concerns like logging and authentication. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))
- [JNDI Name Resolvers](https://awesome-repositories.com/f/networking-communication/decentralized-naming-resolvers/mutable-name-resolvers/jndi-name-resolvers.md) — Provides a memory-based JNDI naming service for looking up resources and objects by name. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))
- [Cross-Node Session Replication](https://awesome-repositories.com/f/networking-communication/session-state-management/cross-node-session-replication.md) — Shares session data across multiple server instances to maintain user state during failover or load balancing. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [HTTP/2 Support](https://awesome-repositories.com/f/networking-communication/http-2-support.md) — Uses the HTTP/2 protocol for improved performance and multiplexed communication between clients and servers. ([source](https://tomcat.apache.org/whichversion.html))
- [Load Balancers](https://awesome-repositories.com/f/networking-communication/load-balancers.md) — Distributes incoming requests across multiple server instances using a configurable load balancer. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [Application-Level](https://awesome-repositories.com/f/networking-communication/load-balancers/application-level.md) — Distributes incoming HTTP requests across a cluster of server instances for load balancing. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Proxy Servers](https://awesome-repositories.com/f/networking-communication/proxy-servers.md) — Routes incoming requests through a proxy server or web server acting as a proxy. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))
- [Reverse Proxy Configurations](https://awesome-repositories.com/f/networking-communication/proxy-servers/reverse-proxy-configurations.md) — Routes requests through a front-end proxy while preserving client information and session state. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))

### Operating Systems & Systems Programming

- [HTTP Connector Abstractions](https://awesome-repositories.com/f/operating-systems-systems-programming/transport-abstraction-layers/multi-protocol-i-o-abstraction-layers/http-connector-abstractions.md) — Provides multiple I/O connectors that abstract network protocol handling from the container.
- [JNDI Resource Registrations](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtualization-platforms/virtualization-networking/resource-configurators/jndi-resource-registrations.md) — Registers JDBC connection pools and other resources in JNDI for lookup by deployed web applications. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [APR Connectors](https://awesome-repositories.com/f/operating-systems-systems-programming/high-performance-i-o-engines/apr-connectors.md) — Leverages the Apache Portable Runtime for improved performance and OpenSSL integration. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))

### Security & Cryptography

- [Security Providers](https://awesome-repositories.com/f/security-cryptography/authentication-providers/security-providers.md) — Authenticates users and authorizes roles using configurable realms, standard authentication methods, and Windows native integration.
- [Security Realms](https://awesome-repositories.com/f/security-cryptography/domain-based-access-controls/security-realms.md) — Authenticates users against configurable credential stores for container-managed security.
- [Role-Based Access Control](https://awesome-repositories.com/f/security-cryptography/role-based-access-control.md) — Authenticates users against a database of credentials and roles to enforce container-managed security on web applications. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [TLS/SSL Configurations](https://awesome-repositories.com/f/security-cryptography/security/cryptography-and-secrets/cryptographic-primitives-management/tls-ssl-configurations.md) — Installs and configures SSL/TLS certificates to serve HTTPS traffic with optional OpenSSL acceleration.
- [TLS Certificate Configuration](https://awesome-repositories.com/f/security-cryptography/tls-certificate-configuration.md) — Apache Tomcat installs and configures SSL/TLS certificates so the server accepts encrypted connections using the https protocol. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))
- [TLS Traffic Encryption](https://awesome-repositories.com/f/security-cryptography/tls-traffic-encryption.md) — Secures HTTP requests by installing and configuring SSL/TLS certificates for HTTPS serving. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [Standard Web Authentication Schemes](https://awesome-repositories.com/f/security-cryptography/identity-access-management/authentication-strategies/user-facing-login-methods/standard-web-authentication-schemes/basic-authentication/standard-web-authentication-schemes.md) — Authenticates users using BASIC, DIGEST, or FORM authentication methods. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))
- [OpenSSL-Accelerated TLS](https://awesome-repositories.com/f/security-cryptography/tls-traffic-encryption/openssl-accelerated-tls.md) — Uses the OpenSSL library for TLS encryption to improve connection throughput. ([source](https://tomcat.apache.org/whichversion.html))
- [Windows Native Authenticators](https://awesome-repositories.com/f/security-cryptography/windows-native-authenticators.md) — Integrates with Windows native authentication for single sign-on. ([source](https://tomcat.apache.org/tomcat-10.1-doc/))

### Software Engineering & Architecture

- [Valve-Based Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/processing-pipelines/valve-based-pipelines.md) — Chains composable request-processing components in a pipeline for cross-cutting concerns.
- [Non-blocking I/O](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-execution/non-blocking-i-o.md) — Handles high-concurrency workloads with advanced I/O extensions that avoid blocking operations. ([source](https://tomcat.apache.org/tomcat-11.0-doc/))
- [JNDI Naming Contexts](https://awesome-repositories.com/f/software-engineering-architecture/named-variable-registers/jndi-naming-contexts.md) — Registers and resolves resources through an in-memory JNDI naming context scoped per web application.

### Part of an Awesome List

- [OpenSSL TLS Accelerations](https://awesome-repositories.com/f/awesome-lists/security/file-encryption/openssl-based/openssl-tls-accelerations.md) — Accelerates TLS connections using OpenSSL for improved performance. ([source](https://tomcat.apache.org/whichversion.html))

### Content Management & Publishing

- [Static File Serving](https://awesome-repositories.com/f/content-management-publishing/project-page-hosting/mesh-web-hosting/static-file-serving.md) — Serves static files and generates directory listings through built-in servlets for unmatched requests. ([source](https://tomcat.apache.org/tomcat-11.0-doc/api/index.html))

### System Administration & Monitoring

- [JMX Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/jmx-monitoring.md) — Exposes server metrics and management operations through JMX for remote monitoring and administration. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
- [Server Side Includes Management](https://awesome-repositories.com/f/system-administration-monitoring/server-side-includes-management.md) — Processes Server-Side Include directives to insert dynamic content into static pages before serving. ([source](https://tomcat.apache.org/tomcat-9.0-doc/))
