tomcat总体模块如下图,其中Connector和Container是核心,将核心和其他组件封装形成一个service。给service提供一个生存环境,控制其生命周期,即Server。
Connector组件
Connector用来接收浏览器发过来的TCP连接请求,创建一个Request和Response对象用来交换数据,然后产生一个线程来处理这个请求,并把Request和Response对象传给此线程。由处理Connector来处理此线程(是多线程处理)。过程如下:
Container容器
由四个子容器形成,Engine,Host,Context,Wrapper,各是父子关系,Engine包含Host,Host包含Context,Context包含Wrapper。一般一个servlet class对应一个Wrapper级别的Container容器,若多个servlet class则提高容器级别,比如使用Context级别的Container。Host在定义上不是必须的,但在执行war程序时是必须的,因为war中比有web.xml,而这个文件解析需要Host。如果有多个Host则还需要定义最高级别的Engine。
Container处理请求如下: