IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> tomcat学习记录 -> 正文阅读

[Java知识库]tomcat学习记录

Tomcat两大组件:Connector 和 Container?

一个Container? 可以对应多个?Connector? ,然后他们一起组成一个service,service只是在他们外面包了一层,把他们组装到一起,对外提供服务

Server:一个Server管理多个Service,Server可以管理Service的生命周期,控制Server的是Tomcat的startup,Server会继续调用Service的start

Service:标准实现类是StandService,它不仅实现了Service,还实现了Lifecycle接口,这样就可以控制下面组件的生命周期

Connector:负责接收浏览器过来的TCP连接请求,创建一个request和response,用于和请求端交换数据

Connector一次处理时序图:

?

Container :容器的父接口,Container容器的设计用的是责任链模式,

4个子容器分别是:Engine、Host、Context、Wrapper,他们是从上往下包含的关系

一个Wrapper通常对应一个Servlet类

一个Engine代表一个完整的Servlet引擎

Host不是必须的,但是如果是war程序,就必须要有Host容器,因为war包下的web.xml文件,需要Host容器解析

Engine:标准实现类是StandardEngine,engine没有父容器,添加的子容器也只能是Host类型的

Host:标准实现类是StandardHost,Engine的子容器,一个host代表一个虚拟主机,虚拟主机的作用就是运行多个应用,StandardHost实现了Deployer,可以通过里面的方法完成应用的部署

?Context:Context代表servlet的Context,它具备了Servlet运行的基本环境,理论上只要有context就可以运行servlet了,

主要作用:设置各种资源的属性和管理组件,启动子容器和Pipeline

Context配置文件中有个reloadable属性,为true时,war包被修改会自动加载这个应用

条件是reloadable为true,并且应用被修改,调用reload方法,reload会先stop再start,reload方法是在backgroundProcess中调用,这个方法是在ContainerBase周期性调用的,因为所以的容器都继承了ContainerBase,所以所有容器都能在backgroundProcess周期执行

<Context path="/" docBase="/usr/local/tomcat/apache-tomcat-8.5.55/webapps/ruoyi" reloadable="false"></Context>

Wrapper:代表一个Servlet,负责管理一个Servlet,包含Servlet整个生命周期

实现类是StandardWrapper,StandardWrapper还实现了一个拥有Servlet初始化信息的ServletConfig

当Servlet装载完成,开始初始化时,需要传入一个对象,StandardWrapperFacade对象,这个对象实现了ServletConfig接口,Servlet可以获取的信息都在这个对象里面,所以Servet可以通过ServletConfig获取有限的容器信息,Servlet初始化完成以后,由StandardWrapperValve去调用他的Service方法,调用Service方法之前要先调用Servlet的所有filter

?

Tomcat中的设计模式:

1.门面设计模式

假设多个子系统要相互通信,但是系统之间不能过多暴露数据,通过增加一个门面,将其他系统感兴趣的内容封装在里面

StandardWrapperFacade 就是 ServletConfig的门面

HttpRequestFacade 就是 HttpRequest的门面

2.观察者模式

通常也可以说是发布订阅模式,也就是事件监听机制

几个角色:

Subject 抽象主题,负责管理所有观察者的引用,同时定义事件操作

ConcreteSubject 具体主题,实现了抽象主题的所有接口,当自己发生变化通知观察者

Observer 观察者 监听主题发生变化的操作接口

Tomcat中的例子:? ? lifecycle , session管理, servlet的创建

3.命令模式? ? ?Connector就是通过命令模式调用的Container的

命令模式通常包含以下几个角色:

Client:创建一个命令

Command:命令接口

ConcreteCommand:具体命令

Invoker:请求者??

Receiver:接收者??

Connector作为抽象请求者,HttpConnector作为具体请求者,HttpProcessor作为命令,Container作为命令的抽象接收者,ContainerBase作为具体的接受者,客户端就是应用服务器Server组件。Server首先创建命令请求者HttpConnector,创建命令HttpProcessor对象,最后交给ContainerBase容器处理

4.责任链模式

就是很多对象由每个对象对下家的引用而连接形成一条链,请求在链上传递,直到链上某个对象处理该请求,或者每个对象都处理,并传给下家,

责任链的角色:

Handle:抽象处理者

ConcreteHandle:具体处理者

Container是抽象处理者,具体处理者从Engine到Host到Context到Wrapper形成一个链

这里又引入了Pipeline 和 Valve扩展了链的功能,链在传递的过程中Pipeline就是连接每个子容器的管子,里面传递的Request和Response相当于管子里的水,,而valve就是在管子上开个小口子,让你有机会接触到里面的水,做一些额外的事,为了防止水不流入下个容器,最后总有一个节点保证,所以每个容器都有一个StandardXXXValve

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:21:41  更:2021-10-20 12:23:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:37:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码