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();


    
诊断报文不属于应用报文。根据引用\[1\]中提到的信息,通常情况下,0x5xx用于网络管理报文,0x6xx或0x7xx用于诊断报文。而引用\[2\]中提到的Autosar中不同类型报文的信号数据流向以及CAN DBC中不同属性决定不同类型报文的信息也支持了这一观点。此外,引用\[3\]中提到的UDS诊断协议是一种汽车通用诊断协议,它可以在不同的汽车总线上实现,而UDS协议中的诊断服务也不属于应用报文。因此,可以得出结论,诊断报文不属于应用报文。 #### 引用[.reference_title] - *1* [诊断报文通讯报文有什么区别?](https://blog.csdn.net/qq_34414530/article/details/130227012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【DBC专题】-12-不同类型报文(应用/诊断/网管/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向](https://blog.csdn.net/qfmzhu/article/details/129552603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [AUTOSAR--UDS诊断报文](https://blog.csdn.net/weixin_45459482/article/details/122174130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值