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

详细讲解Tomcat系统架构

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

分享:详细讲解<a href=http://www.solves.com.cn/e/tags/?tagname=Tomcat target=_blank class=infotextkey>Tomcat</a>之系统<a href=http://www.solves.com.cn/it/cxkf/jiagou/ target=_blank class=infotextkey>架构</a>

 

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   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。 Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器...【详细内容】
2019-09-09   Tomcat  点击:(0)  评论:(0)  加入收藏
我们的监控系统是zabbix,最近刚做完jvm还有tomcat的监控,需要吐槽以下内容:...【详细内容】
2019-09-02   Tomcat  点击:(19)  评论:(0)  加入收藏
帮一位同学解决了一个问题&mdash;&mdash;Tomcat启动超级慢,大概五六分钟。解决之后,只需要3秒钟即可启动。问题怎么解决呢?在Tomcat的bin目录下找到catalina.sh,然后打开它,在以...【详细内容】
2019-08-27   Tomcat  点击:(18)  评论:(0)  加入收藏
一、简介:Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱。虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面...【详细内容】
2019-08-21   Tomcat  点击:(15)  评论:(0)  加入收藏
CentOS7开始,从/etc/init.d脚本改为了systemctl管理服务。今天主要记录一下怎么把tomcat8加入systemd管理的步骤。以下基于centos7.3进行测试验证。1、首先,需要为tomcat配置p...【详细内容】
2019-08-12   Tomcat  点击:(29)  评论:(0)  加入收藏
1:配置executor属性打开/conf/server.xml文件,在Connector之前配置一个线程池:<Executor name="tomcatThreadPool" namePrefix="tomcatThreadPool-" maxThreads="1000" max...【详细内容】
2019-08-08   Tomcat  点击:(24)  评论:(0)  加入收藏
做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了...【详细内容】
2019-08-07   Tomcat  点击:(13)  评论:(0)  加入收藏
概述一般我们打算把一些服务,例如 mysql,tomcat,Nginx设置开机自启动的话一般是有三四种方式来实现,下面以mysql,tomcat,Nginx做例子来演示。一、使用定时任务 cron 命令创建定时...【详细内容】
2019-08-05   Tomcat  点击:(9)  评论:(0)  加入收藏
Tomcat7 的目录结构:1、bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UG...【详细内容】
2019-08-02   Tomcat  点击:(32)  评论:(0)  加入收藏
Tomcat是什么开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。...【详细内容】
2019-07-24   Tomcat  点击:(11)  评论:(0)  加入收藏
一、配置系统管理(Admin Web Application)大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟...【详细内容】
2019-07-19   Tomcat  点击:(12)  评论:(0)  加入收藏
作者:编程迷思来源:http://www.cnblogs.com/kismetv/p/7228274.html前言Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配...【详细内容】
2019-07-03   Tomcat  点击:(17)  评论:(0)  加入收藏
一般是把 Apache服务器 与 tomcat服务器 搭配在一起用Apache服务器 负责处理所有 静态的 页面/图片 等信息。Tomcat 只处理动态的 部分。Apache:是C语言实现的,专门用来提供HT...【详细内容】
2019-06-17   Tomcat  点击:(101)  评论:(0)  加入收藏
一、Tomcat顶层架构先上一张Tomcat的顶层结构图(图A),如下: Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服...【详细内容】
2019-06-17   Tomcat  点击:(26)  评论:(0)  加入收藏
通俗点将,负载均衡就是因为访问流量太大,导致项目访问不流畅、甚至宕掉,所以通过一种分流的方式来缓解这种情况。 一、 工具nginx-1.8.0apache-tomcat-6.0.33二、 目标实现高性...【详细内容】
2019-04-28   Tomcat  点击:(56)  评论:(0)  加入收藏
推荐资讯
相关文章
栏目更新
栏目热门