Tomcat Note
Notes of Tomcat 系统架构与设计模式,第 1 部分 and Tomcat 系统架构与设计模式,第 2 部分.
🔗Tomcat Architecture
--------------------------------------------- | Server | | - Service | | - Connector Coyote | | - Connector Coyote | | - Connector Coyote | | - Connector Coyote | | - ... | | - Container Catalina | | - Session | | - Jasper | | - Naming | | - Logging | | - JMX | ---------------------------------------------
🔗Structures
🔗LifeCycle
void addLifecycleListner(...)
void removeLifecycleListener(...)
LifecycleListeners findLifecycleListeners()
void start()
void stop()
🔗Server
A "Server" is a manager of a collection of "Service".
🔗Service
A "Service" is a combination of a "Container" and multi "Connector" together with several utils.
🔗Connector
A "Connector" receive http request and post http response.
When a http connection comes, a "Connector" passed it to a "Processor" via
Processor::assign()
.
🔗Processor
A "Processor" constructs a http request and response and passed it to a "Container".
🔗Container
A "Container" is a role, including "Wrapper", "Context", "Host" and "Engine".
Engine |- Host 0 |- Context |- Wrapper |- Host 1 |- Context |- Wrapper
🔗Engine
An "Engine" has no parent.
Engine interface
- String get DefaultHost()
- void setDefaultHost(String)
- String getJvmRoute()
- void setJvmRoute(String)
- Service getService()
- void setService(Service)
- void addDefaultContext(DefaultContext)
- DefaultContext getDefaultContext()
- void importDefaultContext()
StandardEngine implements Engine.
- Cluster: load balance
- Realm: security management
- Pipeline: logic
- Valve: operations
🔗Host
A "Host" is a deployer.
- Cluster: load balance
- Realm: security management
- Pipeline: logic
- Valve: operations
🔗Context
A "Context" is the place where to run a servlet.
- Cluster: load balance
- Realm: security management
- Pipeline: logic
- Valve: operations
- Manager: session management org.apache.catalina.session.StandardManager
- Resources
- Loader: class loader
- Mapper: URL map to wrapper
🔗Wrapper
A "Wrapper" is a servlet.
- Pipeline: logic
- Valve: operations
- Servlet
- Servelet stack
Following classes implementing "Wrapper".
org.apache.catalina.servlets.DefaultServlet
org.apache.jasper.servlet.JspServlet
🔗Pipeline and Valve
org.apache.catalina.core.ContainerBase
org.apache.catalina.core.StandardEngine
org.apache.catalina.core.StandardHost
org.apache.catalina.core.StandardContext
org.apache.catalina.core.StandardWrapper
org.apache.catalina.core.StandardPipeline
org.apache.catalina.valves.ValveBase
org.apache.catalina.core.StandardEngineValve
org.apache.catalina.core.StandardHostValve
org.apache.catalina.core.StandardContextValve
org.apache.catalina.core.StandardWrapperValve