栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【笔记】tomcat原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【笔记】tomcat原理

tomcat是什么?

tomcat的工作流程:

1、Tomcat是运行在JVM中的一个进程。它定义为“中间件”,顾名思义是一个在Java项目与JVM之间的中间容器。

2、Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(即main方法),这意味着Web项目中的方法不会自动运行起来。
Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用写好的方法去为客户端返回需要的资源和数据。
3、Tomcat可以运行起来,并调用写好的方法。那么,Tomcat一定有一个main方法。对于Tomcat而言,它并不知道用户会有什么样的方法,这些都只是在项目被部署进webapp下后才确定的。由此可知,Tomcat是用Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是部署到Tomcat中的Web项目必须是按照规定好的接口来进行编写,以便进行调用。

tomcat组成

tomcat核心组件:coyote(connector),catalina(container)

1.connector框架——coyote 1.1.connector核心功能

一、监听网络端口,接收和响应网络请求。

二、网络字节流处理。将收到的网络字节流转换成 Tomcat Request 再转成标准的 ServletRequest 给容器,同时将容器传来的 ServletResponse 转成 Tomcat Response 再转成网络字节流。

1.2.设计connector

需要一个通讯端点来监听端口;需要一个处理器来处理网络字节流;最后还需要一个适配器将处理后的结果转成容器需要的结构。

组件功能
Endpoint端点,用来处理 Socket 接收和发送的逻辑。其内部由 Acceptor 监听请求、Handler 处理数据、AsyncTimeout 检查请求超时。具体的实现有 NioEndPoint、AprEndpoint 等。
Processor处理器,负责构建 Tomcat Request 和 Response 对象。具体的实现有 Http11Processor、StreamProcessor 等。
Adapter适配器,实现 Tomcat Request、Response 与 ServletRequest、ServletResponse之间的相互转换。这采用的是经典的适配器设计模式。
ProtocolHandler协议处理器,将不同的协议和通讯方式组合封装成对应的协议处理器,如 Http11NioProtocol 封装的是 HTTP + NIO。

源码包路径:org.apache.coyote

结构图:

 2.container框架——catalina 2.1.container结构


每个 Service 会包含一个容器。容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个 Web 应用。每个 Web 应用会有多个 Servlet 包装器。Engine、Host、Context 和 Wrapper,四个容器之间属于父子关系。

容器功能
Engine引擎,管理多个虚拟主机。
Host虚拟主机,负责 Web 应用的部署。
ContextWeb 应用,包含多个 Servlet 封装器。
Wrapper封装器,容器的最底层。对 Servlet 进行封装,负责实例的创建、执行和销毁功能。

源码包路径:org.apache.catalina

结构图: 

2.2.处理请求

容器的请求处理过程就是在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑。各容器都会有一个通道 Pipeline,每个通道上都会有一个 Basic Valve(如StandardEnginevalve), 类似一个闸门用来处理 Request 和 Response 。

流程图:

 




 

	
 
			 
	
 

	 
     

     
 
 

参考

分析Tomcat的工作原理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571443.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号