![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jetty源码剖析
文章平均质量分 94
gohodo
这个作者很懒,什么都没留下…
展开
-
Jetty9源码剖析 - Connection组件 - HttpChannel
转载自ph0ly:http://www.ph0ly.com一、概念HttpChannel主要协助HttpConnection触发Server或Handler的处理操作,它内部会包装本次请求对应的Request、Response,并控制它们的生命周期。HttpChannelOverHttp是增强的HttpChannel,它对外暴露请求的参数处理接口(包括请求行、请求头、请求体等)。HttpC...转载 2018-10-25 17:08:38 · 771 阅读 · 0 评论 -
Jetty9源码剖析 - Connector组件 - IO模型
转载自ph0ly:http://www.ph0ly.com一、多路复用IO在开始正式Jetty IO模型分析前,让我们一起来回顾下IO多路复用模型IO多路复用也称为事件驱动IO,它通过select(poll、epoll)阻塞调用,当有某个注册的事件发生时,会唤醒用户线程。它利用单个线程就能完成一系列IO操作,相比于传统的阻塞多线程模型来说优点很明显,不需要占用大量线程、更少的CPU...转载 2018-10-23 20:23:21 · 604 阅读 · 0 评论 -
Jetty9源码剖析 - Server组件
转载自ph0ly:http://www.ph0ly.com一、概念Server是Jetty框架里面最核心的组件之一,它是一个大容器,将其他组件,如Connector、Connection、Handler直接或间接地关联到自己的容器内,所有关联的组件,生命周期都由它掌控,可以理解它就是Jetty容器的大老板二、继承体系Server继承了HandlerWrapper,它是一个Han...转载 2018-10-24 13:55:17 · 324 阅读 · 0 评论 -
Jetty9源码剖析 - Connector组件 - 概述
转载自ph0ly:http://www.ph0ly.com一、概念Connector组件是Jetty整个通信层的实现,通过利用多组件间的协作完成连接的接受、读、写的操作。整个底层实现依赖于Java NIO配合回调函数,打造了一套Jetty特色的通信框架。NIO帮助其完成基础通信,而回调则是通知下游组件进行下一步处理二、继承体系可以看到Connector侧的组件,继承体系还是相对...转载 2018-10-24 13:56:56 · 249 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - 概述
转载自ph0ly:http://www.ph0ly.com一、概念Connection组件就是Jetty里面逻辑连接,和一条持久的物理连接保持一致。前面说到过Connector组件是通信层组件,这里Connection在通信层上面的协议层,主要完成HTTP协议的解析、响应的处理,为Handler的处理做好前期的准备二、继承体系可以看到继承体系还算是比较简单,其中HttpConn...转载 2018-10-24 13:58:29 · 188 阅读 · 0 评论 -
Jetty9源码剖析 - Connector组件 - ServerConnector
转载自ph0ly:http://www.ph0ly.com一、ServerConnector的概念ServerConnector顾名思义是服务端连接器,是Jetty容器核心组件,它主要完成客户端与服务端的连接生命周期管理,能够处理HTTP,HTTP/2和WebSocket,或SSL协议的连接与通信二、继承体系ServerConnector继承了AbstractNetworkCo...转载 2018-10-24 13:59:49 · 2367 阅读 · 1 评论 -
Jetty9源码剖析 - Connector组件 - SelectorManager
转载自ph0ly:http://www.ph0ly.com一、概念SelectorManager是选择器管理器,它主要完成连接接入时的Selector选择,以及控制ManagedSelector完成一系列的操作(例如EndPoint和Connection的创建,以及读写事件的注册)二、继承体系通常我们用的是ServerConnectorManager,ServerConnect...转载 2018-10-24 14:00:59 · 543 阅读 · 0 评论 -
Jetty9源码剖析 - Connector组件 - ManagedSelector
转载自ph0ly:http://www.ph0ly.com一、概念ManagedSelector是一个托管的Selector,它包装了NIO中的Selector,并在内部完成select事件监听处理二、继承体系可以看到ManagedSelector是具有生命周期的,继承体系比较简单三、总体架构图中绿色表示ManagedSelector相关的组件,其中EPC内绿色部分...转载 2018-10-24 14:02:16 · 491 阅读 · 0 评论 -
Jetty9源码剖析 - Connector组件 - EPC(ExecuteProduceConsume)
转载自ph0ly:http://www.ph0ly.com一、概念对于常规的IO操作来说,通常我们会拿一个线程作为生产者,阻塞在select调用上面,等待新的IO事件,当IO到来时,生产者将该事件以及一些数据包装起来放到队列,另一个线程去消费这些事件,然后根据事件类型处理,这样解耦了事件的生产与消费,让IO事件生产和IO事件消费互不阻塞,这种模式在Jetty任务执行模型里面称为Produc...转载 2018-10-24 14:03:27 · 508 阅读 · 0 评论 -
Jetty9源码剖析 - 总体架构
转载自ph0ly:http://www.ph0ly.com一、概述Jetty作为高性能Web服务器,它的架构相比于Tomcat要简单很多,组件抽象更简洁,接下来我们就来看下二、架构上图中,绿色部分是Jetty开放给开发者使用的;浅橙色表示JDK或Servlet规范定义的(或开发者实现的),不属于Jetty自身实现;蓝色部分表示Jetty内部实现的一些组件,不对外暴露上图基本...转载 2018-10-24 14:04:45 · 713 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - SelectChannelEndPoint
转载自ph0ly:http://www.ph0ly.com一、概念EndPoint表示一个逻辑上的传输端点,数据的读取和写入都是从端点开始,配合回调机制(当读操作发生时可以通知到回调函数,而写操作也提供回调机制,当完成写入后,调用写回调函数),可以完成异步处理的。端点的实现通常具有超时的特性,在端点未产生任何读写的情况下,超时机制可以保证EndPoint关闭(包括关联的Channel或其他...转载 2018-10-24 14:05:50 · 561 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - WebAppContext
转载自ph0ly:http://www.ph0ly.com一、WebAppContext的概念WebAppContext是Jetty处理器中核心的Handler,集成了众多其他基础Handler,并提供标准的JavaEE类加载机制二、应用场景WebAppContext提供完善的Session、Servlet、Filter的处理逻辑,它可以帮助我们构建一个标准的J2EE Web服务...转载 2018-10-23 20:21:26 · 592 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - ServletContextHandler
转载自ph0ly:http://www.ph0ly.com一、ServletContextHandler的概念ServletContextHandler是Handler体系的重要成员,它包装常用的SessionHandler、ServletHandler、SecurityHandler,自身同时是一个ContextHandler,集成四大Handler,形成一个接近完整J2EE的处理器(这...转载 2018-10-23 20:19:33 · 3859 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - ServletHandler
转载自ph0ly:http://www.ph0ly.com一、ServletHandler的概念ServletHandler作为Servlet容器必不可少的重要成员之一,是整个Servlet容器实现的最复杂的一个处理器。它实现Servlet规范中Filter、Servlet的基本处理逻辑。从ServletHandler的官方注释看出,该Handler并未完全实现J2EE的特性,如果需要完整...转载 2018-10-23 20:18:04 · 611 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - HttpParser
转载自ph0ly:http://www.ph0ly.com一、概念HttpParser是专门用于解析HTTP协议的类,它能够完成HTTP/0.9,HTTP/1.0,HTTP/1.1的解析,支持rfc2616、rfc7230两种规范下的解析。HttpParser解析完成后会调用HttpHandler来将数据放到相关的请求行、请求头或请求体中(当然HttpParser也支持响应的处理,不过是j...转载 2018-10-25 17:09:51 · 593 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - HttpInput
转载自ph0ly:http://www.ph0ly.com一、概念HttpInput是Jetty实现ServletInputStream的类,主要用于应用层对Request的输入流操作,主要是请求体的操作二、继承体系继承自ServletInputStream,实现了Runnable,很简单三、源码剖析1. 创建前面在HttpChannel章节讲到过,HttpIn...转载 2018-10-25 17:11:04 · 284 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - HttpOutput
转载自ph0ly:http://www.ph0ly.com一、概念HttpOutput实现了ServletOutputStream,提供应用层写数据的各种操作二、继承体系HttpOutput继承自ServletOutput,实现了Runnable,和HttpInput基本一致,没啥说的三、源码剖析1. 创建前面说过HttpOuput是在HttpChannel创建...转载 2018-10-25 17:12:02 · 298 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - HttpGenerator
转载自ph0ly:http://www.ph0ly.com一、概念HttpGenerator顾名思义就是HTTP协议报文生成器,用于HTTP响应报文的生成,和HttpParser相对应。相比于HttpParser复杂的状态机,HttpGenerator状态机设计更精简一点二、流程图Servlet(或Filter)通过向输出流中写数据(当然也可以不写),完成业务处理后,通过Htt...转载 2018-10-25 17:13:07 · 245 阅读 · 0 评论 -
Jetty9源码剖析 - 前沿
转载自ph0ly:http://www.ph0ly.com该套教程以Jetty 9.3.x为基础进行分析,重点在HTTP/1.x,如有出入请确认版本是否一致声明本源码剖析教程由ph0ly完成,仅作学习参考,如讲解有误,欢迎指出转载转载请加上源作者(ph0ly)信息,请大家尊重本人的劳动成果,制作教程不易 ...转载 2018-10-23 20:07:52 · 171 阅读 · 0 评论 -
Jetty9源码剖析 - 设计规范
转载自ph0ly:http://www.ph0ly.com概述Jetty在设计各个组件类时,都遵守大量的规范,这样整个Jetty源码是高度规范的具体规范骨架抽象类:为每个组件接口实现一个基础的骨架类,将一些公用的操作抽象到上层,复用代码(如AbstractHandler、AbstractConnector) 模板方法:对于骨架抽象类中未知的实现,但是需要调用的操作,使用模板方法,...转载 2018-10-23 20:09:15 · 248 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - 概述
转载自ph0ly:http://www.ph0ly.com一、Handler的概念Handler组件是Jetty实际处理Http请求业务逻辑的执行器,一个实际的Jetty服务应该最少存在一个Handler。Handler有很多种形态,例如单纯处理Servlet请求的或者是一个包含多个Handler的容器二、Handler组件在Jetty生态中的位置当请求到来时,Server组件会调...转载 2018-10-23 20:10:59 · 638 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - ScopedHandler
转载自ph0ly:http://www.ph0ly.com一、ScopedHandler的概念在Jetty生态中,特别是Handler组件里面,不得不提ScopedHandler,Handler体系里面很大部分核心组件都继承了ScopedHandler,例如ContextHandler、ServletHandler、SessionHandler等。ScopedHandler其实就是责任链...转载 2018-10-23 20:12:49 · 313 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - SessionHandler
转载自ph0ly:http://www.ph0ly.com一、SessionHandler的概念作为一个现代的Web应用,Web容器必须能支持Session管理,Jetty自然也实现了自己的一套Session管理,也就是接下来要介绍的SessionHandler。SessionHandler集成了各个组件,实现了Session完整的生命周期管理二、应用场景SessionHandle...转载 2018-10-23 20:14:46 · 1138 阅读 · 0 评论 -
Jetty9源码剖析 - Handler组件 - ContextHandler
转载自ph0ly:http://www.ph0ly.com一、ContextHandler的概念ContextHandler主要是完成上下文路径及Servlet路径的处理,是Jetty中必不可少的处理器二、应用场景对请求的Url提取出相应的上下文路径及Servlet需要的路径,便于后续的处理器或业务层使用三、继承体系可以看到ContextHandler是一个Scoped...转载 2018-10-23 20:16:15 · 279 阅读 · 0 评论 -
Jetty9源码剖析 - Connection组件 - HttpConnection
转载自ph0ly:http://www.ph0ly.com一、概念Connection是一条逻辑连接,主要完成Http请求的解析以及通知后续处理。在Jetty中,它需要配合EndPoint来完成任务,EndPoint在IO事件发生时回调Connection的回调函数,从而触发Connection的数据处理。对于HTTP/1.x的版本,使用HttpConnection来处理,而对于HTTP/...转载 2018-10-24 14:06:48 · 450 阅读 · 0 评论