类加载器就是根据类的全限定名(例如com.ty.xxx.xxx)来获取此类的二进制字节流的代码模块,从而程序可以自己去获取到相关的类. 一.java中的类加载器   1.类加载器类别 java中的类加载器主要分为三类: Bootstrap ClassLoader:启动类加载器,负责加载<JAVA_HOME>\lib目录中的class文件: Extension ClassLoader:扩展类加载器,负责加载<JAVA_HOME>\lib\ext路径下的class文件: Applica…
Tomcat是非常常用的应用服务器,了解Tomcat的总体架构以及实现细节,对于理解整个java web也是有非常大的帮助. 一.Server   1.最简单的服务器结构 最简单的服务器结构如图所示: Server向客户端提供服务,并且服务器可以start或stop. 缺点:如果需要该服务器支持多种网络协议,就很难扩展,因此改进如下: 2.Connector和Container 将容器拆分成Connector以及Container,Connector用于和客户端连接,可以扩展支持多种协议,建立连…
浅读tomcat架构设计和tomcat启动过程(1) https://www.cnblogs.com/piaomiaohongchen/p/14977272.html tomcat通过org.apache.catalina.Lifecycle接口统一管理生命周期,所有有生命周期的组建都要实现Lifecycle接口. 通过反射加载查看代码: Lifecycle的接口方法有很多,简单解读下: (1)定义13个String类型的常量,不同的常量,代表不同的状态信息 (2)定义了3个管理监听器的方法:…
浅读tomcat架构设计和tomcat启动过程(1) https://www.cnblogs.com/piaomiaohongchen/p/14977272.html 浅读tomcat架构设计之tomcat生命周期(2) https://www.cnblogs.com/piaomiaohongchen/p/14982770.html Container是tomcat容器的接口,接口位置org.apache.catalina.Container Container一共有4个子接口,分别是:Engi…
Connector用于跟客户端建立连接,获取客户端的Socket,交由Container处理.需要解决的问题有监听.协议以及处理器映射等等. 一.Connector设计   Connector要实现的主要功能如下: 设计图如下: 1.ProtocolHandler Connector中的ProtocolHandler用于处理不同的通信协议,Tomcat主要支持HTTP.AJP协议,并且支持BIO.NIO.APR等I/O方式.ProtocolHandler中使用AbstractEndpoint启动…
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> 前面已经分析完了Tomcat的启动和关闭过程.本篇就来接着分析一下Tomcat中请求的处理过程. 在開始本文之前,咋们首先来看看一个Http请求处理的过程.普通情况下是浏览器发送http请求->建立Socket连接…
一图甚千言,这张图真的是耽搁我太多时间了: 下面的tomcat架构设计代码分析,和这张图息息相关. 使用maven搭建本次的环境,贴出pom.xml完整内容: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche…
上一篇博文介绍了Server的创建,在Server创建完之后,就进入到Engine的创建过程,如下: 一.Engine的创建   1.创建Engine实例 当前次栈顶元素为Service对象,通过Service对象的setContainer()方法,将Engine对象添加到Service中. 2.为Engine添加集群配置 3.为Engine添加生命周期监听器 4.为Engine添加安全配置 二.Host的创建   1.创建Host的实例 addCallMethod(String rule,St…
对于应用服务器来说,性能是非常重要的,基本可以说决定着这款应用服务器的未来.通常从软件角度来说,应用服务器性能包括如下几个方面: 1.请求处理的并发程度,当前主流服务器均采用异步的方式处理客户端的请求: 2.减少网络传输的数据量,提高网络利用率: 3.降低新建网络链接的开销,以实现链接在多个请求之间的复用: 4.选择合适的I/O方式,例如NIO等. 一.阻塞与非阻塞.同步与异步 ------同步:发出一个调用时,没有得到结果之前,该调用不返回,由调用者主动等待调用结果. | 关注的是消息通信机制…
Connector是Tomcat中非常重要的一个组成部分,说白了,就是如何从客户端获取到相应的请求信息.这部分主要包括的难点有这样几个部分: 1.客户端与服务端的协议 客户端与服务端的协议是多种多样的,Tomcat肯定不能仅仅支持HTTP协议 2.数据I/O方式 I/O通常有NIO.BIO等多种方式,如何提高数据传输的效率? 一.Coyote   1.Coyote简介 Tomcat中的Connector就是Coyote,功能主要是封装了底层的网络通信.为Catalina容器提供了统一的接口,使容…