测试扩展(四)——Tomcat和socket
一、前言
这篇博客主要做一个总结,记录Tomcat和http请求,通过阅读大佬们的博客,得出以下结论:
- servlet是java为了支持动态的交互网页所定制的标准
- Tomcat为servlet的运行环境,可以称之为容器,Tomcat是运行在JVM上的应用服务器
- server是Tomcat的运行环境(sever.xml)
- Tomcat支持两种协议:HTTP和AJP(apache 私有协议,用于tomcat和apache静态服务器通信)
基于以上几点,本篇博客将介绍:Tomcat源码结构、servlet结构、Tomcat核心类图、Tomcat功能结构以及具体功能的作用、socket,以上几点只做整体了解,不进行深入分析
若有错误,敬请斧正
参考博客连接在文章末尾粘贴
二、Tomcat源码结构

Tomcat的主体是Catalina,其他包可以看成工具类,支持Catalina
2.1Tomcat框架层次(或者说Catalina框架层次)

2.2Tomcat抽象结构图

2.3Tomcat核心类图
主要由一堆组件组成,如Server、Service、Connector等,并基于JMX管理这些组件

2.4Server
服务器的意思,代表整个tomcat服务器,一个tomcat只有一个Server
Server是整个Tomcat组件的容器,包含一个或多个Service
主要配置文件为server.xml,server.xml的结构如下

2.5Service
Server中的一个逻辑功能层, 一个Server可以包含多个Service
多个Connector+一个Container构成一个Service,Service就是对外提供服务的组件,有了Service组件Tomcat就可以对外提供服务了
2.6Connector
连接器,是Service的核心组件之一,一个Service可以有多个Connector,主要是连接客户端请求

ProtocolHandler用来处理请求,不同的ProtocolHandler代表不同的连接类型,比如:Http11Protocol使用的是普通Socket来连接的(tomcat9已经删除了这个类,不再采用BIO的方式),Http11NioProtocol使用的是NioSocket来连接的。
Endpoint用来处理底层Socket的网络连接,实现TCP/IP协议
- Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。
- Acceptor用于监听请求,
- AsyncTimeout用于检查异步Request的超时,
- Handler用于处理接收到的Socket,在内部调用Processor进行处理
Processor用于将Endpoint接收到的Socket封装成Request(这个Request和ServletRequest无关),用来实现HTTP协议的,
Adapter充当适配器,将请求适配到Servlet容器,用于将Request转换为ServletRequest交给Container进行具体的处理
2.7Container
四种容器:Engine(引擎), Host(主机), Context(上下文), 和 Wrapper(包装器)

这是一个责任链模式,对象层层传递,最后交由Servlet进行处理:
一个container中会存在一个Engine,有且只有一个;
Engine下会有多个host,表示站点或者虚拟主机,使得一个服务器实例可以承担多个域名的服务;
一个host下会有多个Context,表示多个应用;
一个Context下会有多个Wrapper,
Wrapper:表示一个独立的servlet。
2.8 Pipeline和valve
2.9Loader
是被Container用来载入各种所需的Class
2.10Manager
是被Container用来管理Session池
2.11Realm
是用来处理安全里授权与认证
三、servlet
servlet对象的主要配置文件是web.xml,用来设置servlet参数和servlet-mapping。
粗略

详细

四、Socket
socket是connector操作的对象,其中request和response不是servlet的,还需要进行转化。


java中的socket对象【
java.net.Socket类,客户端socket】
以上就结束了,本篇博客只是整合了一下Tomcat,servlet、socket,如果想看详细内容,可查看下面的参考链接
参考连接:
https://www.jianshu.com/p/d74eef07487f
https://www.jianshu.com/p/e438d2f1e4c2
https://blog.csdn.net/qq_34985719/article/details/78386183
https://wenku.baidu.com/view/ed0b80cdb0717fd5370cdc67.html
https://blog.csdn.net/w1992wishes/article/details/79242797
https://blog.csdn.net/yuxiangaaaaa/article/details/72867037
https://www.jianshu.com/p/571c474279af
https://www.jianshu.com/p/39a2639604ae

浙公网安备 33010602011771号