Tomcat总结
主要组件
Tomcat的主要组件如图1-1所示,一个Server包含多个Service,而Service是Tomcat提供服务的最重要的主体,每个Service中又包含多个Connector和一个Container。Connector负责处理Http请求用于接收request和发送response,Container作为Servlet的载体负责处理业务逻辑。因此,Tomcat是一个Http服务和Servlet容器的集合体。
图1-1 Tomcat组件结构
Connector组件
Connector组件结构如图1-2所示,Connector又ProtocolHandler和Adapter组成,其中ProtocolHandler又由EndPoint和Processor组成。EndPoint负责处理Socket接收和发送,是TCP/IP的具体实现;Processor是负责从Socket对象中读取请求消息并生成Tomcat Request,以及将Tomcat Response装入Socket中;Adapter是Connector和Container之间的桥梁,负责将Tomcat Resquest转化为ServletRequest,以及将ServletResponse转化为Tomcat Response,可以想到Adapter应该采用了适配器模式。
图1-2 Connector组件结构
Container组件
Container组件,是由一个Engine组件组成,组件结构如图1-3所示。
其中,Host对应相应的请求链接,Context对应相应的Web App,Wrapper对应相应的Servlet。
图1-3 容器组件结构
Container组件处理请求的寻址流程如图1-4所示。
当Connector收到http://user.shopping.com:8080/order/buy
请求,经过Connector上述的处理,将ServletRquest发给Container处理,Container中的Servlet Engine会将其寻找并依次转发给对应的HOST、Context(即Web App)和Wrapper(即Servlet)处理。
当Servlet执行完业务逻辑后,生成ServletResponse,将原路返回,整个请求处理的概况图过程如图1-5所示,不再赘述。
图1-5 Tomcat消息流