tomcat service.xml能多个context吗_Java开源框架之深入了解Tomcat的系统架构

Tomcat 是Java语言开发的一个Servlet容器,Servlet和Servlet容器之间的关系就像子弹和枪,互相独立发展又相互依赖。

0a8b79500dcf6db969e5ae6de563ba82.png

Tomcat目录结构:

  • /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。
  • /conf - Tomcat 配置文件目录。
  • /logs - Tomcat 默认日志目录。
  • /webapps - webapp 运行的目录。
  • /lib - Tomcat运行需要的库文件。
  • /temp - Tomcat临时文件存放目录
  • /work - Tomcat的工作目录

Tomcat 的总体结构:

df31df5d25eca136d303d2ea71b6cb0f.png
  • Server:整个Tomcat服务器,一个Tomcat只有一个Server;
  • Service:Server中的一个逻辑功能层, 一个Server可以包含多个Service;
  • Connector:称作连接器,是Service的核心组件之一,一个Service可以有多个Connector,主要是连接客户端请求;
  • Container:Service的另一个核心组件,按照层级有Engine,Host,Context,Wrapper四种,一个Service只有一个Engine,其主要作用是执行业务逻辑;
  • Jasper:JSP引擎;
  • Session:会话管理;

上面简单介绍了Tomcat的模块结构,接下来结合源码深入了解Tomcat设计:

Server 服务器

Server代表整个Tomcat的Servlet容器,可能包含一个或多个Service服务。

类关系图:

460abd4f0948fb34a5c86d9d56078240.png

StandardServer类是Server接口的标准实现。

Service 服务

一个Server可以包含多个Service(他们是彼此完全独立,只共享基本的JVM和系统路径上的类),一个Service负责维护一个或多个Connector和一个Container。

8cf17a6e3152d68b498b90a9b101e188.png

StandardService类是Service接口的标准实现。

Connector 连接器

用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。

09bc48898dc0d6708fcd02d81ed3c10f.png

Container 容器

Container 容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper,这四个组件不是平行的,而是父子关系,Engine 包含 Host,Host 包含 Context,Context 包含 Wrapper。

da273ba030fdee30903b16ed06dddb23.png

Engine 容器

一个Service中有多个Connector和一个Engine,Engine表示整个Servlet引擎,一个Engine下面可以包含一个或者多个Host。

af07ab9b47e996951334161a7bdde5ea.png

StandardEngine类是Engine接口的标准实现。

Host容器

Host,代表一个站点,也可以叫虚拟主机,一个Host可以配置多个Context。

3ba1379342200697730dcd503b55141d.png

StandardHost类是Host接口的标准实现。

Context容器

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。

df36ddbc5f4af0ff242b90a668454731.png

StandardContext类是Context接口的标准实现。

Wrapper容器

Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。

0df43ad6428f36517ba978493d014a88.png

StandardWrapper类是Wrapper接口的标准实现。

Tomcat重要组件的关系:

a0347edc87da925d7e3f22632249e8d8.png

Tomcat 中其它组件

Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

Tomncat启动流程

Tomcat 的 start 方法启动 Tomcat,如果你清楚 Tomcat 的系统架构,你会容易理解 Tomcat 的启动逻辑。Tomcat的启动流程很标准化,入口是BootStrap,统一按照生命周期管理接口Lifecycle的定义进行启动。首先,调用init()方法逐级初始化,接着调用start()方法进行启动,同时,每次调用伴随着生命周期状态变更事件的触发。

90274044b59305777ba3534555a3d593.png
已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页