您现在的位置是:主页 > 数据库技术 > 数据库技术

怎样解析Tomcat内部结构和请求过程

IDCBT2022-01-14服务器技术人已围观

简介怎样解析Tomcat内部结构和请求过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 概述 Tomcat是一个JS

怎样解析Tomcat内部结构和请求过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

概述

Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。

Tomcat的组织结构

Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina  servlet容器,其他组件按照一定的格式要求配置在这个顶层容器中。

Tomcat的各种组件都是在Tomcat安装目录下的/conf/server.xml文件中配置的。

由Server.xml的结构看Tomcat的体系结构

由上可得出Tomcat的体系结构:

Tomcat的体系结构

由上图可看出Tomca的心脏是两个组件:Connecter和Container。一个Container可以选择多个Connecter,多个Connector和一个Container就形成了一个Service。Service可以对外提供服务,而Server服务器控制整个Tomcat的生命周期。

    组件的生命线“Lifecycle”

    Service 和 Server 管理它下面组件的生命周期。

    Tomcat 中组件的生命周期是通过 Lifecycle  接口来控制的,组件只要继承这个接口并实现其中的方法就可以统一被拥有它的组件控制了,这样一层一层的直到一个最高级的组件就可以控制 Tomcat  中所有组件的生命周期,这个最高的组件就是 Server,而控制 Server 的是 Startup,也就是您启动和关闭 Tomcat。

    Tomca的两大组件:Connecter和Container

    Connecter组件

    一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response  对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response  对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。

    Tomcat中有两个经典的Connector,一个直接侦听来自Browser的HTTP请求,另外一个来自其他的WebServer请求。Cotote  HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,Coyote JK2  Connector在端口8009处侦听其他Web Server的Servlet/JSP请求。

    Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理是  Connector 设计的核心。

    Container组件

    Container的体系结构如下:

    Container的体系结构

    Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet  class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。

    标签:

    很赞哦! ()

本栏推荐