美文网首页
Jetty基础入门

Jetty基础入门

作者: AC编程 | 来源:发表于2021-04-23 14:26 被阅读0次

    一、什么是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的基本架构

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

    Tomcat最顶层是Service,控制了服务器的整个生命周期,每一个Service由一个Container和多个Connector组成,形成一个独立完整的处理单元,对外请求。

    Jetty的核心是Server,整体包含了多个Handle,还有一个Connector组成,Connector负责接受请求,将请求分配给一个队列去进行处理。

    Jetty的架构设计要比tomcat的更清晰,简单。

    Jetty的基本架构 Tomcat架构

    四、与Tomcat的对比

    • Jetty比较容易贴合第三方框架,比如你可以直接用Spring配置一个Jetty服务器
    • 直接将Jetty作为提供HTTP服务的组件,嵌入到应用中(SpringBoot也嵌入了Tomcat)
    • Jetty是面向Handler的架构,而Tomcat是面向容器的架构
    • Jetty默认采用NIO技术,而Tomcat默认是BIO
    • Jetty高度模块化,可以很灵活的管理拓展组件,而Tomcat对其他组件的管理则相对困难
    • Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。而且按需加载组件,减少了服务器的内存开销,内部默认采用NIO异步处理等特性提高了服务器性能。配置更加的灵活、简单、开发效率快、扩展性强。
    • 从技术上来说的话,Jetty不是一个功能全面的J2EE服务器,缺少很多对J2EE功能的支持。而Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的请求服务。它自身扩展了大量的J2EE特性来满足各种企业项目应用的需求,对于很多的Java web项目来说,我们可能并不需要这么多高级特性,从一定程度上浪费了很多的资源。

    五、Jetty使用

    Jetty官网

    5.1 打开Jetty官网下载Jetty包
    Jetty下载
    5.2 操作步骤

    1、解压Jetty包

    解压Jetty包

    2、打开cmd进入Jetty目录

    3、执行 java -jar start.jar命令

    执行 java -jar start.jar命令

    4、打开浏览器访问http://127.0.0.1:8080

    404

    我们可以看到页面展示的Jetty的404界面,因为在我们的JETTY_HOME下面的webapps下面并没有任何应用,所以会显示该错误。Jetty为我们提供了一个基础应用,在JETTY_HOME的demo-base目录下面起动步骤:
    1、进入JETTY_HOME/demo-base
    2、打开cmd
    3、执行java -jar ../start.jar
    4、通过浏览器访问http://127.0.0.1:8080

    Jetty欢迎页

    由此,我们可以看到Jetty的欢迎界面,这样我们的Jetty的HelloWorld便完成了。

    注意:与Tomcat一样,示例程序并不代表绝对安全,当你去生产环境搭建一个全新的服务器,记得把示例程序删除掉。

    六、常用配置

    • start.ini 服务起动配置项
    • etc/xxx.xml Jetty服务相关配置
    • modules/xxx.mod 模块相关配置

    七、Jetty模块化

    单体应用架构 微服务架构

    JDK9开始就支持了模块化,前端很多框架也是模块化的,按需加载,节约资源。

    通过以下命令可以查看到所依赖的模块

     java -jar ../start.jar --list-modules
    
    image.png

    八、异步Servlet

    异步Servlet是Servlet3.0出来的新特性。在并发量较大的情况下,若一个Servlet处理较慢,则会导致所有Servlet需要排队等待之前的Servlet线程处理完后才能继续执行。在加入异步Servlet之后,可以在处理时间较长的Servlet中增加单独的工作线程专门处理该业务,然后Servlet线程继续处理其他的Servlet请求。

    相关文章

      网友评论

          本文标题:Jetty基础入门

          本文链接:https://www.haomeiwen.com/subject/hcjnqltx.html