Jetty架构分析

本文详细介绍了Jetty服务器的架构,包括Connector、Handler组件及线程池的生命周期管理。Jetty由Connector负责接收客户端连接,Handler处理请求响应,线程资源从ThreadPool获取。Server作为起点,协调所有组件工作,并通过LifeCycle接口控制组件生命周期。文中还探讨了不同类型的Connector(如NIO、BIO)和Handler接口的实现,强调了Handler的链式组合和配置灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最新的jetty版本是jetty 9,但下面这个jetty源码阅读系列都是基于jetty8进行的,所以可能有些地方和最新的源码对不上。
jetty服务器由一个或多个connector核心组件以及一系列handler组件和一个线程池组成。结构图如下:
这里写图片描述

三个组件的职责:connector负责接收客户端连接请求,而handler组件则负责处理请求并给予响应,前两个组件需要的线程资源都直接从线程池ThreadPool中获取。
Jetty Server可以同时配置多个不同connector在不同的端口进行监听,并可以根据不同的需求配置不同的connector,比如非阻塞的NioConnector,阻塞的SocketConnector等;对于处理请求的handler组件,也可以根据需要配置不同的handler,比如需要Servlet就配置一个ServletHandler,需要Session就配置一个SessionHandler,当然如果都不需要则不配置这些handler就可以了。
Jetty提供了一个Server类来协调和控制上线核心组件进行工作,Server是应用的起始点,它负责创建并初始化Connector Handler和ThreadPool,然后调用
start方法启动它们,让它们处于待命状态。值得注意的是Server类本身也是一个Handler。

1.组件的生命周期

Jetty中的关键组件,比如Connector、ThreadPool、Handler等都有生命周期的概念,这些组件的生命周期定义都是通过实现LifeCycle接口来进行控制。当然有些组件不是直接实现的LifeCycle而是通过继承LifeCycle的子类来定义的生命周期管理。下面是描述它们关系的类图:
这里写图片描述
上面说到Server本身也是一个Handler,同时它也是启动和协调其它组件工作的类,通过LifeCyle可以控制其它组件的生命周期,可以通过start()来启动Server,通过stop()来停止Server。
LifeCycle的定义如下,可以看到比较重要的关于生命周期的方法其实就是start()和stop()。其它还有一些判断组件运行状态和添加移除事件监听器的方法。

public interface LifeCycle
{
   

        public void start()
        throws Exception;


    public void stop()
        throws Exception;


    public boolean isStarted();


    public boolean isStarting();


    public boolean isStopping();


    public boolean isStopped();


    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值