一、Tomcat server 基本结构
Tomcat最重要的两个组件是Connector(连接器)和Container(容器)。其中Connector是可以被替换的,这样可以提供给服务器设计者更多的选择。多个Connector与一个Container封装在一起(最主要的两个组成部分),就组成了一个Service。
1、Connector(连接器)
Connector在指定的端口监听客户端的请求,并将从Socket连接接受到的请求封装成Request发送给Engine处理,并将处理后的结果封装为Response返回给客户端。
Connector使用ProtocolHandler来处理请求,不同的ProtocolHandler代表不同的连接类型。例如:Http1.1Protocol使用的是Socket连接。ProtocolHandler包含三个组成部分:Endpoint、Processor、Adapter。
1.1、Endpoint
实现类TCP/IP协议,处理底层的Socket网络连接。
Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。Acceptor用于监听请求,AsyncTimeout用于检查异步Request的超时,Handler用于处理接收到的Socket,在内部调用Processor进行处理。
1.2、Processor
Processor实现了Http协议,在这将Endpoint接受到的Socket连接封装成Request。
1.3、Adapter
Adapter将封装好的Request转交给Engine做具体处理。
2、Container(容器)
Container是一个接口,定义了下属的各种容器。
2.1、Engine
负责处理来自所属service的全部请求,并经处理后的结果返回给service。每个Engine下可以配置多个虚拟主机(Host),用来匹配不同的请求。同时设有一个默认的Host,用来处理未能匹配到的请求。
2.2、Host
每个Host代表一个虚拟主机,并匹配不同的域名。Host将匹配到的请求交给相应的context来处理。这里的每个context代表一个Web应用,一个Host可以包含多个Context。
2.3、Context
一个Context对应一个应用,也即应用上下文,保存了应用运行期间所需的数据结构与中间变量。每个Context中包含多个Wrapper。
2.4、Wrapper
每个Wrapper代表一个servlet,它负责管理servlet的装载、初始化、执行、资源回收。
二、Lifecycle
用于管理组件的生命周期相,如:(init、start、stop、destroy)等操作。
1、LifecycleListener
用于监听组件生命周期相关的事件。
2、LifecycleEvent
当有生命周期时间发生时,用于事件的时间、类型和数据等信息。
三、Tomcat的启动过程
详情请见下一篇