标签:response 关闭 传输层 inux 实现 协议格式 解决 jsp 技术
https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/
startup.bat
(win),startup.sh
(Linux & Mac)shutdown.bat
(win),shutdown.sh
(Linux & Mac)logging.properties
:日志的配置server.xml
:服务器配置文件,例如端口的指定tomcat-users.xml
:定义了tomcat的角色以及角色拥有的功能web.xml
:全局配置,很熟悉,我们java web工程也有自己的web.xml,这个是Tomcat级别的,自己的web.xml如果和它重复那么自己的会覆盖Tomcat的。Http请求的处理过程:
http请求只是定义了数据的组织格式(通讯格式),是一个应用层协议,数据传输依靠的是TCP/IP协议。
传输的形式:
Tomcat是一个Http服务器(因为它能够接收处理Http请求)
我们使?浏览器向某?个?站发起请求,发出的是Http请求,那么在远程,Http服务器接收到这个请求之后,会调?具体的程序(Java类)进?处理,往往不同的请求由不同的Java类完成处理。
大致流程:与上图不同,增加了Servlet容器解耦
HTTP 服务器接收到请求之后把请求交给Servlet容器来处理,Servlet 容器通过Servlet接?调?业务类。Servlet接?和Servlet容器这?整套内容叫作Servlet规范。
注意:Tomcat既按照Servlet规范的要求去实现了Servlet容器,同时它也具有HTTP服务器的功能。
Tomcat的两个重要身份
1)http服务器
2)Tomcat是?个Servlet容器
当?户请求某个URL资源时
从上可以看出,Tomcat两个重要的功能:
Tomcat 设计了两个核?组件连接器(Connector)和容器(Container)来完成 Tomcat 的两?核?功能:
Coyote 是Tomcat 中连接器的组件名称 , 是对外的接?。客户端通过Coyote与服务器建?连接、发送请求并接受响应 。
Tomcat Coyote支持的IO模型与协议:
应用层默认协议:HTTP/1.1
传输层默认IO模型:NIO
在 8.0 之前 ,Tomcat 默认采?的I/O?式为 BIO(同步阻塞IO),之后改为 NIO。 无论 NIO、NIO2 还是 APR, 在性能??均优于以往的BIO。 如果采?APR, 甚?可以达到 Apache HTTP Server 的影响性能。
组件 | 作用描述 |
---|---|
EndPoint | EndPoint 是 Coyote 通信端点,即通信监听的接?,是具体Socket接收和发送处理器,是对传输层的抽象,因此EndPoint?来实现TCP/IP协议的 |
Processor | Processor 是Coyote 协议处理接? ,如果说EndPoint是?来实现TCP/IP协议的,那么Processor?来实现HTTP协议,Processor接收来?EndPoint的 Socket,读取字节流解析成Tomcat Request和Response对象,并通过 Adapter将其提交到容器处理,Processor是对应?层协议的抽象 |
ProtocolHandler | Coyote 协议接?, 通过Endpoint 和 Processor , 实现针对具体协议的处 理能?。Tomcat 按照协议和I/O 提供了6个实现类 : AjpNioProtocol , AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol , Http11Nio2Protocol ,Http11AprProtocol |
Adapter | 由于协议不同,客户端发过来的请求信息也不尽相同,Tomcat定义了??的 Request类来封装这些请求信息。ProtocolHandler接?负责解析请求并?成 Tomcat Request类。但是这个Request对象不是标准的ServletRequest,不能?Tomcat Request作为参数来调?容器。Tomcat设计者的解决?案是引?CoyoteAdapter,这是适配器模式的经典运?,连接器调? CoyoteAdapter的Sevice?法,传?的是Tomcat Request对象, CoyoteAdapter负责将Tomcat Request转成ServletRequest,再调?容器 |
Tomcat是?个由?系列可配置(conf/server.xml)的组件构成的Web容器,?Catalina是Tomcat的servlet容器。
Tomcat本质上就是?款Servlet容器, 因为Catalina才是Tomcat的核? , 其他模块都是为Catalina 提供?撑的。 ?如 :
模块分层结构图:
也可以这么说:Tomcat就是一个Catalina的实例,因为Catalina是Tomcat的核心。
Tomcat/Catalina实例:
Tomcat 启动的时候会初始化这个实例,Catalina 实例通过加载server.xml完成其他实例的创建,创建并管理?个Server,Server创建并管理多个服务, 每个服务?可以有多个Connector和?个Container。
对应关系:每?个Service实例下可以有多个Connector实例和?个Container实例
Lifecycle
接?,提供了?种优雅的启动和关闭整个系统的?式Container组件下有?种具体的组件,分别是Engine、Host、Context和Wrapper。这4种组件(容器) 是??关系。Tomcat通过?种分层的架构,使得Servlet容器具有很好的灵活性。
上述组件的配置其实就体现在conf/server.xml中。
标签:response 关闭 传输层 inux 实现 协议格式 解决 jsp 技术
原文地址:https://www.cnblogs.com/isdxh/p/14182278.html