您的位置 首页 java

Java开源框架之深入了解Tomcat的系统架构

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

Tomcat目录结构:

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

Tomcat 的总体结构:

  • 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服务。

类关系图:

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

Service 服务

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

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

Connector 连接器

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

Container 容器

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

Engine 容器

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

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

Host容器

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

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

Context容器

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

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

Wrapper容器

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

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

Tomcat重要组件的关系:

Tomcat 中其它组件

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

Tomncat启动流程

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

文章来源:智云一二三科技

文章标题:Java开源框架之深入了解Tomcat的系统架构

文章地址:https://www.zhihuclub.com/201304.shtml

关于作者: 智云科技

热门文章

网站地图