当前位置: 首页 > news >正文

SpringBoot关闭Tomcat容器,SpringBoot使用Jetty容器

一、简介

Tomcat:
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

Jetty:
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

二、相同点:

1、相同点
Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。

2、不同点:
1. 架构比较
--------Jetty的架构比Tomcat的更为简单
--------Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。
--------Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。
2.性能比较
--------Jetty和Tomcat性能方面差异不大
--------Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。
--------Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。
--------Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高
--------Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。
--------Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。

  1. 其它比较
    Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
    Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。

三、按使用场景区分

  1. Jetty更轻量级。这是相对Tomcat而言的。
    由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。
  1. Jetty更灵活。
    体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
    相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。

四、总结:

Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。

1、Jetty适合长连接应用,就是聊天类的长连接
2、Jetty更轻量级。这是相对Tomcat而言的。
3、jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
4、使用Jetty,需要在spring-boot-starter-web排除spring-boot-starter-tomcat,因为SpringBoot默认使用tomcat

五、使用

要配置为jetty要去掉默认tomcat配置 添加jetty

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>  
                <exclusion>  
                    <groupId>org.springframework.boot</groupId>  
                    <artifactId>spring-boot-starter-tomcat</artifactId>  
                </exclusion>  
            </exclusions> 
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

用就完了
在这里插入图片描述

相关文章:

  • 记录angular使用codemirror的过程和遇到的问题
  • 猿创征文|当我在追光 我与光同航--我与Java的技术成长之路
  • python基础专栏12-python基础篇-复合数据类型-字典
  • 投入不到一万,月赚十万+的海外平台搬运项目
  • 赚钱副业项目:steam搬砖的一点经验
  • Go 1.18 版本新特性详解!
  • 共码未来 | 多维提升开发技能,玩转各大开发者平台活动
  • html5新增特性之画布canvas的使用
  • 查题校园题库系统 授权即可使用
  • 弹性力学的简单学习
  • 青云霍秉杰:一文读懂Prometheus长期存储主流方案
  • 【Swoole系列4.6】协程连接池
  • 美的集团上半年营收1827亿:净利160亿 狠心批量裁员
  • 手机+卫星,到底有多难?
  • c++基础(九)——静态成员
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SpringBoot 实战 (三) | 配置文件详解
  • V4L2视频输入框架概述
  • 利用jquery编写加法运算验证码
  • 两列自适应布局方案整理
  • 七牛云假注销小指南
  • 使用 @font-face
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 昨天1024程序员节,我故意写了个死循环~
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (52)只出现一次的数字III
  • (Forward) Music Player: From UI Proposal to Code
  • (libusb) usb口自动刷新
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)c52学习之旅-简单了解单片机
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)pulsar安装在独立的docker中,python测试
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (转)h264中avc和flv数据的解析
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET命令行(CLI)常用命令
  • .net专家(高海东的专栏)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @Autowired自动装配
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [Android Pro] AndroidX重构和映射
  • [C/C++] -- 二叉树
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [C++]Leetcode17电话号码的字母组合
  • [CentOs7]iptables防火墙安装与设置
  • [DM复习]关联规则挖掘(下)
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [HCIE] IPSec-VPN (手工模式)