新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 站长技术 > 服务器

详细讲解Tomcat系统架构

时间:2019-09-09 13:05:14  来源:  作者:

分享:详细讲解Tomcat之系统架构

 

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

分享:详细讲解Tomcat之系统架构

 

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

分享:详细讲解Tomcat之系统架构

 

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

分享:详细讲解Tomcat之系统架构

 

Servlet 规范提供了两种扩展机制:Filter和Listener。

  • Filter 是干预过程的,它是过程的一部分,是基于过程行为的。
  • Listener 是基于状态的,任何行为改变同一个状态,触发的事件是一致。

一、Tomcat系统架构

Tomcat 要实现 2 个核心功能:

  • 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。
  • 加载和管理 Servlet,以及具体处理 Request 请求。

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

分享:详细讲解Tomcat之系统架构

 

1,连接器

连接器需要完成 3 个高内聚的功能:

  • 网络通信。
  • 应用层协议解析。
  • Tomcat Request/Response 与 ServletRequest/ServletResponse 的转化。

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

分享:详细讲解Tomcat之系统架构

 

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

分享:详细讲解Tomcat之系统架构

 

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 WrApper。这 4 种容器不是平行关系,而是父子关系。

分享:详细讲解Tomcat之系统架构

 

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

分享:详细讲解Tomcat之系统架构

 

每一个容器都有一个 Pipeline 对象。

分享:详细讲解Tomcat之系统架构

 

3,一个请求在 Tomcat 中流转的过程

分享:详细讲解Tomcat之系统架构

 

4,startup.sh 启动 tomcat 的过程:

分享:详细讲解Tomcat之系统架构

 



Tags:Tomcat   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
web.xml简介web.xml是web应用的基础配置文件,但又不是必须的。web.xml主要用来配置Filter、Listener、Servlet等。我们常用的框架多数都要通过web.xml文件进行配置后才能引入...【详细内容】
2019-12-19   Tomcat  点击:(6)  评论:(0)  加入收藏
随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以定期清理掉久远的日志…...【详细内容】
2019-12-19   Tomcat  点击:(7)  评论:(0)  加入收藏
Tomcat如何配置和优化,并不是每个工程师都需要掌握的内容。但如果你想成为一个架构师,就必须要学会本文的人内容了。在conf目录下存放着Tomcat的所有配置文件,而server.xml是其...【详细内容】
2019-12-18   Tomcat  点击:(4)  评论:(0)  加入收藏
一、配置Tomcat/conf/server.xml修改配置<connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" URIEncoding...【详细内容】
2019-12-17   Tomcat  点击:(6)  评论:(0)  加入收藏
使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上手idea的时候,瞎配置部署Tomcat,结果最后修改一个jsp都要重新启动服务器,我这金牛座程序员能忍?~这...【详细内容】
2019-12-16   Tomcat  点击:(10)  评论:(0)  加入收藏
我们都知道,get请求和post请求的一个比较显著区别就是,在使用post请求的时候,中文不会乱码,但是在使用get请求的时候,如果url后面带有中文就会乱码了。那么这个怎么解决呢? 前提:配...【详细内容】
2019-12-09   Tomcat  点击:(13)  评论:(0)  加入收藏
客户端用户点击浏览器服务连接,浏览器通过客户端底层服务通过路由传送报文,目标服务器获取解析报文,Tomcat监听程序触发处理请求一、Tomcat 软件目录结构及功能 bin: 服务相关...【详细内容】
2019-12-09   Tomcat  点击:(19)  评论:(0)  加入收藏
本文内容主要介绍了Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤,文章给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧!最近公司需要在Linux下监控t...【详细内容】
2019-12-05   Tomcat  点击:(38)  评论:(0)  加入收藏
概述分享下最近整理的一份监控指标和巡检指标,文末附领取方式。1、主机资源监控 2、tomcat监控 3、redis监控 4、MQ监控 5、nginx监控 6、URL监控 7、数据库监控...【详细内容】
2019-12-05   Tomcat  点击:(24)  评论:(0)  加入收藏
虽然现在springboot微服务纵横都是用的jar包,但是还有很多使用的tomcat。tomcat是servlet的容器,也是springboot默认集成的容器,有必要对他的网络线程模型做一下了解。 (一) tomc...【详细内容】
2019-11-27   Tomcat  点击:(13)  评论:(0)  加入收藏
第一步:创建脚本#!/bin/bash# func:自动监控tomcat脚本并且执行重启操作# 获取tomcat进程ID(其中[grep -w &#39;tomcat&#39;]代码中的tomcat需要替换为你的tomcat文件夹名)Tomc...【详细内容】
2019-11-27   Tomcat  点击:(65)  评论:(0)  加入收藏
本文记录的是在CentOS 7下安装与配置jdk-8u162的过程。一、下载jdk-8u162版本链接地址:官方地址二、上传jdk到centos下三、检查当前linux系统上是否有jdk,linux命令:rpm -qa |...【详细内容】
2019-11-27   Tomcat  点击:(23)  评论:(0)  加入收藏
Tomcat9.0压缩版本安装教程1. 使用Tomcat前必须确保jdk 安装成功;2. 需要配置环境变量命名JAVA_HOME如图所示: 3. 把Tocmcat压缩包解压到你想要放的文件夹如图所示: 4. 打开解...【详细内容】
2019-11-27   Tomcat  点击:(10)  评论:(0)  加入收藏
基本环境准备jdk安装配置。安装目录例如:/usr/java/jdk1.8.0_05tomcat下载放到约定目录。例如:/usr/local/dmstomcat tomcat做成系统服务把tomcat做成系统服务,就可以使用servi...【详细内容】
2019-11-20   Tomcat  点击:(39)  评论:(0)  加入收藏
1 创建一个简单的servlet代码示例:package springmvc;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import j...【详细内容】
2019-11-20   Tomcat  点击:(15)  评论:(0)  加入收藏
首先,修改tomcat/conf/server.xml配置文件。<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400" /> <Connector...【详细内容】
2019-11-15   Tomcat  点击:(40)  评论:(0)  加入收藏
Tomcat 是我们最常用的服务器之一,合理的优化配置,往往有非常好的效果。配置的话主要分两块,一个 server.xml,还有一个就是 JVM 参数的配置。这里我们以8.5版本为例,主要看下 ser...【详细内容】
2019-11-13   Tomcat  点击:(20)  评论:(0)  加入收藏
注:内容来源于我本人的微信公众号:码农历险技有些spring boot项目平时的流量涌入比较大的,或者是当有活动的时候在活动那几天涌入的流量也是很大的,这时候如果不对我们项目的线...【详细内容】
2019-11-12   Tomcat  点击:(15)  评论:(0)  加入收藏
将皕杰报表demoserver中的演示项目report部署到tomcat8最新版本后,当访问报表的URL中含有中文时,访问报表报错如下:十一月 11, 2019 2:38:58 下午 org.apache.coyote.http11.Ht...【详细内容】
2019-11-12   Tomcat  点击:(20)  评论:(0)  加入收藏
本篇写的是HTTPS在Tomcat中的配置方法;至于HTTPS安全认证的原理,大家可以上网查看去理解;学习建议:大家可以使用面向对象的方式去理解握手协议,单向认证与双向认证的原理。(这篇本...【详细内容】
2019-11-04   Tomcat  点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条