前言:        

        最近公司项目中用到了Jetty来作为项目的web容器,借此机会来分享一下我的学习心得。在学习Jetty之前,一定要了解一些Jetty的基本概念以及优缺点,这样才方便做更深入的学习,现在让我来慢慢揭开它的神秘面纱吧!

基础:

    什么是Jetty?

        简单来讲Jetty就是一个开源的HTTP服务器和Servlet引擎,它可以为JSP和Servlet提供运行时环境,比如Java Web应用最常用的Servlet容器Tomcat,由于其轻量、灵活的特性,Jetty也被应用于一些知名产品中,例如ActiveMQ、Maven、Spark、GoogleAppEngine、Eclipse、Hadoop等。

    为什么使用Jetty?

        ①异步的 Servlet,支持更高的并发量  

        ②模块化的设计,更灵活,更容易定制,也意味着更高的资源利用率

        ③在面对大量长连接的业务场景下,Jetty 默认采用的 NIO 模型是更好的选择

        ④将jetty嵌入到应用中,使一个普通应用可以快速支持 http 服务

    Jetty的基本架构:                                                                                              

        Jetty 的架构比较简单,核心组件主要是由 Server 和 Handler 组成。其中 Server 的 Handler 是其比较重要的一个数据模型,Jetty 中所有的组件都是基于  Handler 来实现的。

Tomcat的基本架构:

        Server是Tomcat的最顶层元素,是service的集合,即可包含多个service,Server控制整个Tomcat的生命周期。Service由一个Container和多个Connector组成(或者说由Connector,Engine和线程池[可选]组成),形成一个独立完整的处理单元,对外提供服务。

Jetty与Tomcat的对比:

        ①Jetty 比较容易贴合第三方框架,比如你可以直接用 Spring 配置一个 Jetty 服务器

        ②直接可以将 Jetty 作为提供 HTTP 服务的组件,嵌入到应用中

        ③Jetty 是面向 Handler 的架构,而 Tomcat 是面向容器的架构

        ④Jetty 默认采用 NIO 技术,而 Tomcat 默认是 BIO

        ⑤Jetty 高度模块化,可以很灵活的管理拓展组件,而 Tomcat 对其他组件的管理则相对困难