
jetty源码学习
文章平均质量分 76
acm_lkl
这个作者很懒,什么都没留下…
展开
-
jetty的安装和启动
Jetty是当下非常流行的一款轻量级Java Web服务器和Servlet容器实现,它由Eclipse基金会托管,完全免费而且开放源代码,因此所有人均可以从其官网下载最新源代码进行研究。由于其轻量、灵活的特性,Jetty被广泛用于一系列知名产品,例如ActiveMQ、Maven、Spark、Google App Engine、Eclipse、Hadoop等等。下面就来研究如何安装和启动jetty。原创 2017-11-30 22:11:33 · 32385 阅读 · 0 评论 -
Jetty服务器启动过程分析
先大致看一下外部启动一个Jetty服务器的过程,然后再展开分析 1.java start.jar进行启动,解析命令行参数并读取start.ini中配置的所有参数。 2.解析start.config确定jetty模块的类路径并确定首先执行的MainClass。 3.可以选择是否另起一个进程来,如果不另起进程,则通过反射方式来调用MainClass,start.ini中配置的JVM参数不会生效。原创 2017-12-18 22:03:49 · 3207 阅读 · 0 评论 -
Jetty架构分析
最新的jetty版本是jetty 9,但下面这个jetty源码阅读系列都是基于jetty8进行的,所以可能有些地方和最新的源码对不上。 jetty服务器由一个或多个connector核心组件以及一系列handler组件和一个线程池组成。结构图如下: 三个组件的职责:connector负责接收客户端连接请求,而handler组件则负责处理请求并给予响应,前两个组件需要的线程资源都直接从线程池Thr原创 2017-12-17 23:29:36 · 962 阅读 · 0 评论 -
Jetty源码分析之NIO实现的Connector:SelectChannelConnector
Connector在Jetty中是负责接收客户端请求,然后为每个请求分配一个对请求进行处理的线程,并且负责将处理完得到的响应发送给客户端。总共有两种类型的Connector,基于Socket的阻塞Connector,代表类是SocketConnector;另外就是基于非阻塞NIO的SelectChannelConnector,当然其实在Jetty中还有基于NIO的阻塞Connector。但现在使用最原创 2017-12-25 23:58:03 · 1553 阅读 · 0 评论 -
Jetty源码分析之线程池:QueuedThreadPool
前面分析Jetty整体架构的时候介绍过Jetty的三大组件:Acceptor、Handler和ThreadPool;前两者工作的时候都是需要线程的,而所需的线程正是从ThreadPool中获取的。这篇文件就是来分析ThreadPool的一个具体实现:QueuedThreadPool。下面是它的类图:继承了父类AbstractLifeCycle之后,QueuedThreadPool就可以当成一个Lif原创 2017-12-24 22:10:42 · 6231 阅读 · 3 评论 -
Jetty源码分析之WebAppContext
WebAppContext即Web Application ContextHandler,表示一个Web应用的上下文,是上篇文章介绍的ContextHandler的一个子类,也是实际中应用的ContextHandler。先来看下类图: 可以看到在ContextHandler和WebAppContext中间还有一个ServletContxtHandler,下面就先从这个类开始分析。1.Servlet原创 2017-12-24 13:26:27 · 3301 阅读 · 0 评论 -
Jetty源码分析之ContextHandler
ContextHandler是ScopedHandler的直接子类,继承关系比较简单就不贴类图了。 ContextHandler从名字的直观含义上来看是上下文Handler,在servlet规范中每个web应用都有一个上下文(context)的含义,其实就是对应到这里的ContextHandler了。当web容器收到用户请求之后,会根据请求里面的url先判断属于请求时发给哪个web应用的,但并不会原创 2017-12-24 11:37:15 · 1610 阅读 · 0 评论 -
Jetty源码分析之ScopedHandler及Handler链
ScopedHandler在Jetty的Handler体系中属于比较重要的一个成员,像ContextHandler、SessionHandler、ServletHandler、WebappContext等重要组件都直接或间接的继承了ScopedHandler,所以在学习其它更具体handler之前,先来分析下它的源码。先来看下ScopedHandler的类图: 从类图中可以看到继承的层次比较深,所原创 2017-12-21 11:22:51 · 1208 阅读 · 0 评论 -
Jetty源码分析之AbstractHandler
jetty可以说是一个基于Handler设计的Web服务器,其通过组合各种Handler实现对请求的处理。所以源码阅读部分先从Handler部分开始,而AbstractHandler是大部分Handler都继承了的父类,因此先了解它的源码。下面先来看下AbstractHandler的类图,了解下它的继承关系。 从类图上就可以看到AbstractHandler实现了LifeCycle和Handler原创 2017-12-19 22:44:50 · 2656 阅读 · 0 评论 -
Jetty源码阅读---Jetty的类加载器WebAppClassLoader
前面介绍了java中类加载的一般模型:双亲委派模型,这个模型适用于大多数类加载的场景,但对于web容器却是不适用的;这是因为servlet规范对web容器的类加载做了一些规定,简单的来说有以下几条: 1.WEB-INF/classes和WEB-INF/lib路径下的类会优先于父容器中的类加载,比如WEB-INF/classes下有个ABC类,CLASSPATH下也有个ABC类,jetty会原创 2018-02-04 15:49:01 · 2476 阅读 · 1 评论