一.Tomcat的简介
Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件的方式设计。即整体功能是通过组件的方式拼装完成。另外每个组件都可以被替换以保证灵活性。 从本质上讲,tomcat作为一个解析jsp/servlet的容器
二.Tomcat架构以及其组件
架构如图:
(图片来源于网络)
组件:
Server: 代表Tomcat的实例 ,tomcat只有一个实例,也即只有一个Server,其主要功能是控制Service的生命周期。
Service: 代表的是一个处理客户端请求以及提供服务的组件,在一个Tomcat底下允许存在多个Service。
Connector: Connector的主要任务是连接客户端与服务端,包含了众多本配置,比如需要监听的IP、端口号,以及所支持的协议,以及处理请求和传入请求的线程数目。(连接器的重要点在于连接器的模式,比如Http Http1.1等,以及运行模式,比如NIO、AIO等,后面会详细说)。
Engine 引擎: 它主要功能是将传入请求委托给适当的虚拟主机处理。 一个Service只允许有一个Engine引擎。
Host 虚拟主机: 基于域名匹配至指定虚拟机。作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context。一个虚拟主机下都可以部署一个或者多个Web App,每个Web App对应于一个Context,当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。
Context上下文: 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,它表示Web应用程序本身。Context 最重要的功能就是管理它里面的 Servlet 实例,一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet实例组成。
三. 重点配置文件解析:
连接器配置:
`java <Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize ="10240" redirectPort="8443" maxSwallowSize="-1" />
虚拟主机配置:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
name:主机名称
appBase:虚拟主机对应的根目录
unpackWARs:是否自动解析war包
autoDeploy:是否自动部署
Context配置:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="hello" path="/h" reloadable="true"/>
</Host>
docBase:在appBase下的相对路径
path:访问网址的附加Path路径