A servlet container (also known as a servlet engine) is a part of a web server or application server that manages and executes Java servlets.
🔧 In simple terms:
A servlet container is the runtime environment for servlets — it:
- Loads servlet classes
- Manages their lifecycle (init, service, destroy)
- Handles HTTP requests/responses
- Manages threading, resource pooling, session tracking, etc.
🧠 Think of it like:
🧊 JVM runs Java classes
🧱 Servlet container runs servlet classes inside a web app
💼 Common Servlet Containers
| Servlet Container | Description |
|---|---|
| Apache Tomcat | Most popular standalone servlet container |
| Jetty | Lightweight, embeddable container |
| GlassFish | Full Java EE server (includes servlet engine) |
| WildFly (JBoss) | Java EE server (servlets + more) |
| Undertow | Lightweight, async servlet engine (used by WildFly) |
🔄 Servlet Lifecycle (Managed by Container)
1. Class loading ➜
2. init() ➜
3. service() ➜ (runs on each request)
4. destroy()
The container ensures:
- One servlet class instance (singleton)
- Multiple threads for concurrent requests
- Clean up after lifecycle ends
📦 Example in Tomcat:
- You deploy a
.war(Web Archive) - Tomcat loads your servlet and maps it to a URL like
/login - When a request hits
/login, Tomcat passes it to your servlet’sdoGet()ordoPost()
🚀 Features a servlet container provides:
- HTTP request/response handling
- URL-to-servlet mapping
- Session management
- Security (authentication, authorization)
- Multithreading
- Resource management (connection pools, caching)