关于Tomcat,Java开发,尤其是后端开发同学都会接触过。当我们通过http://localhost:8080/xxx在浏览器成功访问网页时,我们也就了解了Tomcat最为基本使用方法了。
时常我们研发同学也并不会去关心Tomcat的高级特性,例如,连接方式、缓存、压缩、静态资源等相关配置与优化方法等。也许只有当Tomcat性能出现瓶颈时,我们才会考虑Tomcat的优化,去网上或Tomcat官网搜索,临时抱佛脚,往往在解决了一个问题后又出现另外一个问题,不能系统性很好地掌握和理解Tomcat配置管理和优化。
冥泷将以系列文章分析Tomcat源码。
Tomcat是实现了Java Servlet,JavaServer Pages,Java Expression和Java WebSocket技术的框架。
我们将从结构上分析Tomcat的整体架构(摘自网上截图)。
其中,有几个概念需要梳理。
Server:在Tomcat中,Server代表完整的Tomcat容器。Tomcat会提供一个标准的Server容器。
Service:是存活在Server的中间组件,关联一个或者多个Connectors到一个Engine对象上。Service很少由用户配置或修改。
Engine:一个Engine代表一个Service中的请求处理管道,由于一个Service可以有多个Connectors,那么这个Engine可以处理多个Connectors,并将响应返回到合适的connector,最终返回给客户端。
Connector:一个Connector管理与客户端的通信。在Tomcat中可以有多种Connector,包括Coyote Connector(http),JK2 Connector(AJP协议)。
Host:一个Host是一个网络名的关联,例如www.yourcompany.com 到你的Tomcat服务器。一个Engine能包含多个Hosts,并且Host名称可以支持网络别名,例如abc.company.com , yourcompany.com。
Context:一个Context代表一个Web应用,一个Host可包含多个Context。
后面将结合Tomcat源码,基于整体架构和基础概念,以一个系列文章的方式来深入浅出的分析tomcat的源码。