在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

160次阅读
没有评论

共计 3266 个字符,预计需要花费 9 分钟才能阅读完成。

怎样解析 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。

Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml   文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个  Engine 代表一个完整的 Servlet 引擎。

Engine 容器

Engine 容器比较简单,它只定义了一些基本的关联关系

Host 容器

Host 是 Engine 的字容器,一个 Host 在 Engine   中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是  Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。

Context 容器

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet   了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在  Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个  Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request   来分配的。

Wrapper 容器

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

Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了拥有一个 Servlet 初始化信息的  ServletConfig,由此看出 StandardWrapper 将直接和 Servlet 的各种信息打交道。

Tomcat 中其它组件

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

Tomcat Server 处理一个 HTTP 请求的过程

Tomcat Server 处理一个 HTTP 请求的过程

Tomcat Server 处理一个 HTTP 请求的过程

1、用户点击网页内容,请求被发送到本机端口 8080,被在那里监听的 Coyote HTTP/1.1 Connector 获得。

2、Connector 把该请求交给它所在的 Service 的 Engine 来处理,并等待 Engine 的回应。

3、Engine 获得请求 localhost/test/index.jsp,匹配所有的虚拟主机 Host。

4、Engine 匹配到名为 localhost 的 Host(即使匹配不到也把请求交给该 Host 处理,因为该 Host 被定义为该 Engine 的默认主机),名为 localhost 的 Host 获得请求 /test/index.jsp,匹配它所拥有的所有的 Context。Host 匹配到路径为 /test 的 Context(如果匹配不到就把该请求交给路径名为“ ”的 Context 去处理)。

5、path=“/test”的 Context 获得请求 /index.jsp,在它的 mapping  table 中寻找出对应的 Servlet。Context 匹配到 URL PATTERN 为 *.jsp 的 Servlet, 对应于 JspServlet 类。

6、构造 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet 的 doGet() 或 doPost(). 执行业务逻辑、数据存储等程序。

7、Context 把执行完之后的 HttpServletResponse 对象返回给 Host。

8、Host 把 HttpServletResponse 对象返回给 Engine。

9、Engine 把 HttpServletResponse 对象返回 Connector。

10、Connector 把 HttpServletResponse 对象返回给客户 Browser。

关于怎样解析 Tomcat 内部结构和请求过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计3266字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 内射精品无码中文字幕 | 国产精品无码aⅴ嫩草 | 在厨房拨开内裤进入毛片 | 国产夜趣福利第一视频 | 婷婷精品国产亚洲av麻豆不片 | 久久99国产综合精品女同 | 日本午夜一级特黄毛片 | 日本少妇人妻xxxxx18 | 久久婷婷色 | 91中文字幕yellow字幕网 | 99久久精品午夜一区二区 | 国内精品人妻无码久久久影院 | 四川丰满妇女毛片四川话 | 亚洲av无码专区在线观看下载 | 国产亚洲精品高清在线 | 午夜精品久久久久 | 黄色视频毛片 | 久热久草 | 欧美啪| 亚洲国内自拍愉拍 | 亚无码乱人伦一区二区 | 久久久久国产精品熟女影院 | 极品少妇hdxx麻豆hdxx | 无码人妻精品一区二区三区9厂 | 久久人人玩人妻潮喷内射人人 | 无码少妇精品一区二区免费动态 | 欧美人与zoxxxx另类 | 台湾无码一区二区 | 七次郎最新免费永久观看 | 亚洲熟妇av一区二区三区漫画 | 国产网址在线 | 校园春色~综合网 | 一本一道久久综合狠狠老 | 国产白袜脚足j棉袜在线观看 | 精品动漫一区 | 午夜网站入口 | 91在线播放网站 | 久草视频免费播放 | 热久久精品在线 | 亚欧中文字幕久久精品无码 | 成年网站在线观看 |