架构图
各个组件
Server
Server代表整个catalina servlet容器。它的特性代表servlet容器的整体特性。Server可以包含一个或多个service,以及顶级的命名资源集。通常,此接口的实现,还将实现生命周期接口,这样当start()和stop()方法被调用,所有它包含的service也开始或停止。在两者之间,实现必须在端口属性指定的端口号上打开服务器套接字。当连接被接受时,读取第一行,并与指定的关闭命令进行比较。如果命令匹配,则启动服务器关机。注意,按图上各个容器或组件的关系此接口的正确实现应该是一个单例的。
service
service连接一组或多个Connector和一个Container,他们一起来处理传入的请求。也就是一个service把多个Connector和一个Container组装起来才能对外提供服务,二而service也需要生存的土壤这个土壤就是Server。service的标准实现是StandardService它不仅实现了Service接口还实现了Lifycycle接口说明他的上级容器可以控制它的生命周期。
Connector
Connector负责把接收到的请求解析出来然后封装成request和response对象然后交给Container处理。目前Connector支持http和ajp协议。
Container
Container字面是容器的意思。既然是容器里面肯定装有东西,那么它装的是什么呢?它装着Engine、Host、Context和Wrapper这几个容器。他们是Container子类型。Engine(引擎)包含Host和Context,接到请求后仍给相应的Host在相应的Context里处理。Host:就是我们所理解的虚拟主机。Context:就是我们所部属的具体Web应用的上下文,每个请求都在是相应的上下文里处理的。Wrapper:Wrapper是针对每个Servlet的Container,每个Servlet都有相应的Wrapper来管理。