不用 Tomcat?SpringBoot 项目用啥代替?

UnderTow服务器 Undertow通过一系列的内部机制,将原生的对象转换为Servlet规范中的和对象(其实是jAVAEE规范的),然后调用Servlet的service方法进行处理。这个过程涉及到多个类的协作,包括和等。在实际应用中,开发人员通常不需要直接处理这些转换过程,而是通过配置和部署Servlet来处理业务逻辑。类用于配置在Undertow中Servlet应用的部署相关信息。它实现了Cloneable接口,这意味着可以对这个部署配置进行克隆操作,可能在需要创建相似但略有不同的部署配置场景下会用到。 阅读详情
AI摘要

SpringBoot默认使用内嵌式Tomcat作为容器技术,同时也支持Undertow容器。本文介绍了Undertow的特点,如高性能、支持Servlet4.0等,还说明了在SpringBoot中设置Undertow的方法。通过对比Tomcat与Undertow,发现高并发场景下Undertow性能和内存使用更优。

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。

1SpringBoot中的Tomcat容器

SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

2SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?

没错,就是题目中的Undertow容器技术。

  • 什么是Undertow?

    Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。Undertow 是红帽公司的开源产品,是 Wildfly 默认的 Web 服务器。Undertow 提供一个基础的架构用来构建 Web 服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器 API,完全向下兼容 Java EE Servlet 3.1 和低级非堵塞的处理器。

  • Undertow的特点

    • 高性能 在多款同类产品的压测中,在高并发情况下表现出色。

    • Servlet4.0 支持 它提供了对 Servlet4.0 的支持。

    • Web Socket 完全支持,包括JSR-356,用以满足 Web 应用巨大数量的客户端。

    • 内嵌式 它不需要容器,只需通过 API 即可快速搭建 Web 服务器。

    • 灵活性 交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。

    • 轻量级 它是一个 内嵌Web 服务器, 由两个核心 Jar 包组成

SrpingBoot已经完全集成了Undertow技术,我们只需要引入Undertow的依赖即可,如下所示。

  • 移除Tomcat的依赖

    <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>
    
  • 添加Undertow依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>
    

配置好以后,我们启动应用程序,发现容器已经替换为Undertow。

图片

那我们为什么需要替换Tomcat为Undertow技术呢?

3Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。

但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

图片

Undertow是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

图片

我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:

QPS测试结果对比:
  • Tomcat

    图片

  • Undertow

    图片

内存使用对比:
  • Tomcat

    图片

  • Undertow

    图片

通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。

4最后

SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。

大公司的SpringBoot 项目都不用Tomcat容器这是为什么? 阅读详情

相关推荐

Springboot项目部署到tomcat

一、首先新建一个Springboot项目 我这里用的是idea。直接new->project->Spring Initializr,然后点击下一步: 然后填上你的组名,项目名,这里比较重要的一点是要选择war包,不要选jar包: 然后下面一路next。等到最后一步完成会自动下载项目所需jar包什么的,需要等下就行了。这里要看好你配置的maven环境是否正确,否则会下载很慢。 然后下载好了之后可以随便新建一个index.html文件,写个测试就行。 不过这个时候运行是不能直接访问html文件的

小四是个程序猿的博客 1965

Tomcat与Undertow的优劣对比

SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。

pandaToSuccess的博客 1万+

tomcat容器转变为springboot项目启动

今天接到项目需求,要求把现有的项目改为springboot框架启动的形式。 首先:springboot框架启动有两种方式:jar和war部署运行 了解我们项目的整个工程结构。 我们项目目前是用tomcat容器启动的maven项目,包含若干个子项目 而改为springboot框架启动,我在原来的基础上增加了一个子项目。 一、在新增的子项目增加一个pom.xml ,然后部署方式是jar <par...

study_xiaoyu的博客 3211

【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比

在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。所以,如果是高并发的业务系统,Undertow 是最佳选择。在SpringBoot应用的application.properties或application.yml中,可以调整Undertow的线程池设置。当你进行Tomcat调优发现在怎么调都无法满足需求的时候,Undertow容器在性能和内存上都优于Tomcat容器,因此选择Undertow容器并进行调优是更好的选择。所以只需更换一个依赖即可使用,还是很方便的。

A的博客 4471

Spring Boot进阶(83):使用Spring Boot轻松整合Oracle数据库 | 超级详细,建议收藏

使用Spring Boot轻松整合Oracle数据库

**My Coding Family** 3458

Spring Boot进阶(22):决战容器之巅:Tomcat vs Undertow!性能对比分析揭秘最佳选择!

SpringBoot之Tomcat与Undertow容器性能对比?此文告诉你答案

**My Coding Family** 4983

SpringBoot项目部署到Tomcat

一般情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动 (使用内置 Tomcat 的话,可以在 application.yml 中进行相关配置)

weixin_53850894的博客 1万+

Cadence OrCAD: 层次化设计 Hierarchical Design

详细介绍OrCAD的原理图层次化设计方法。

Fantasy237的博客 1万+

Tomcat启动springboot项目

Tomcat启动springboot项目 1.首先需要先将springboot项目修改下 打包方式改为war,因为springboot项目maven的打包方式默认是jar。需要在pom中 <packaging>war</packaging> 引入springboot tomcat的依赖 。注释掉其他的tomcat依赖,如果有。 <dependenc...

weixin_42476498的博客 5647

Halcon像素比例标定(误差大)-相机标定

一种简易标定: 像素比例标定,如果需要精确一些则需要在高度和宽度上都需要计算,然后求出比例系数。需要高精度标定板和相机,以及多次标定才能达到稳定的状态,这种标定简单,但是误差大。 read_image (Img0008, 'D:/00项目代码/000视觉软件/02Halocn算法20190501/04测量20190424/07_比例计算测量标定/IMG0008.jpg') rgb1_to_...

SSSS的博客 3985

V93000 SmarTest 8入门:从零搭建你的第一个半导体测试程序

半导体测试是芯片从设计走向量产的关键环节,而ATE(自动化测试设备)正是支撑这一环节的核心工具。理解ATE测试程序开发的基本原理,不仅需要掌握测试机台的硬件架构,还要熟悉其软件环境中的管脚映射、电平时序、测试流程等底层逻辑。V93000作为爱德万的主力平台,其SmarTest 8环境通过对象化与流程化设计,将复杂的芯片测试任务拆解为可配置、可复用的模块,极大提升了并行测试效率与调试的便利性。无论是数字逻辑芯片的功能验证,还是模拟混合信号器件的参数测量,掌握SmarTest 8的核心操作都能帮助你快速搭建出可

weixin_31476015的博客 246

使用tomcat启动SpringBoot项目

springboot默认内嵌tomcat服务器,也默认使用main函数启动整个项目。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version> </dependency>

培根芝士的专栏 8723

BUCK型DC/DC变换器的建模与仿真

BUCK型DC-DC变换器的建模与仿真摘要1 文献调研1.1 研究背景1.2 Buck电路的应用场合2 原理分析2.1 模型介绍2.2 模型分析2.3 频域和时域响应2.4 参数指标要求3 参数设计3.1 校正器选择3.2 校正器参数整定3.2.1 积分器3.2.2 一阶微分环节3.2.3 超前校正器3.3 改进4 结论与展望参考文献 摘要   目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。如何对一个系统进行建模分析、补偿校正变得越来越重要。   本文选择BUCK型DC/DC变换器作为载体,

屠龙归来仍是少年 2万+

为啥大公司的 SpringBoot 项目都不用 Tomcat

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。1SpringBoot中的Tomcat容器Spr...

公众号-老炮说Java 693

手把手教学:用国产GLM-4.6替代Claude4.0,实现AI自动化编程全流程

本文提供了一份详细的教程,指导开发者使用国产GLM-4.6模型替代Claude 4.0,实现AI自动化编程。内容涵盖从获取API密钥、搭建本地环境、改造Claude Code工具到实战开发与VSCode集成的全流程,旨在帮助用户低成本、高效率地体验AI自主编程。

weixin_29070861的博客 555

零外围电路!用CH340X实现ESP32一键下载的完整教程

本文详细介绍了如何利用CH340X系列USB转串口芯片实现ESP32的一键自动下载功能,无需任何外围逻辑控制电路。通过解析CH340X的增强型DTR/RTS功能,提供核心电路设计、电压匹配方案,并指导在Arduino IDE和PlatformIO中进行软件配置,帮助开发者构建简洁、可靠且低成本的ESP32下载方案。

gpu4optimizer的博客 776

springboot 配置tomcat部署项目

前言: springboot部署项目有两种: 1、使用内置tomcat,打成jar包,发布到线上即可。 2、使用外置tomcat,打成war包,线上需要另外tomcat把war包放在tomcat目录下才能运行 一、使用springboot内置tomcat,打成jar包 1、tomcat是一个免费的、开放源码的Web应用服务器,作为中小型系统和并发访问用户不是很多的场合下被普遍使用。...

GSON的博客 1万+

Python 陌生代码库阅读之道:从零起步到一周掌控 5 万行老项目的实战策略

文中特别强调"自顶向下+画图+注释"的基础阅读心法,并提供了具体的代码示例和命令行技巧。对于大型项目,建议先建立核心流程的骨架认知,再逐步填充细节,同时注重文档化和测试覆盖率的提升。 掌握这套方法后,开发者可以将陌生代码库的阅读效率提升3倍以上,在一周内建立起对5万行级别项目的整体掌控力。

铭渊老黄 507

Tomcat部署SpringBoot项目

关于Tomcat的下载与安装教程网上很多,这里简单给大家推荐一篇。我们的重点主要放在如何使用Tomcat来部署我们的SpringBoot项目上。 一、修改启动类 继承SpringBootServletInitializer类,并重写覆盖configure方法,代码如下: public class Application extends SpringBootServletI...

The blogs of Hunger 4537

Python爬虫实战:新浪财经股票金融数据全方位抓取教程

本教程系统介绍了新浪财经股票数据爬取技术,从静态网页解析、实时接口请求到异步爬取和数据存储,帮助你搭建了一个完整的金融数据采集流程。未来,可以结合深度学习模型进行行情预测,或者将数据接入量化交易系统,实现自动化投资。

2201_76125261的博客 2210

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

springboot项目部署到 本地tomcat容器

部署spring boot 项目到tomcat容器 一开始自己 捣鼓 想 多 踩坑 果然坑还真不少 后来查了点别人的部署经验 很快就 搞定了。 步骤: 一 丶修改打包方式 在pom.xml中设置打包方式 默认 为jar 需要修改为war <packaging>war</packaging> 二丶移除spring boot内嵌的tomcat <dependency> <groupId>org.springframework.bo

H_g_y_的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot使用Undertow代替Tomcat

Undertow使用 spring boot内嵌容器默认为tomcat,想要换成undertow,非常容易,只需修改spring-boot-starter-web依赖,移除tomcat的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>

赵先森 998

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

如何把springboot项目部署到tomcat上

文章目录一、 企业发布场景1. 首次发布2. 非首次发布3. 全量发布和增量发布概念和区别二、springboot部署tomcat2.1. 创建Web初始化类2.2. 修改打包方式2.3. 项目发布目录2.4. 启动tomcat2.5. 浏览器验证 一、 企业发布场景 1. 首次发布 项目上线第一次会采用全量发布 【编译】-【打包】-【全量发布】-【测试】-【上线】 2. 非首次发布 从第2次开始包括第2次:采用增量发布 【编译】-【打包】-【增量发布】-【测试】-【上线】 3. 全量发布和增量发布概念和区

Gblfy_Blog 2562

SpringBoot项目如何打包部署到tomcat中去

SpringBoot项目如何打包成war包        最近朋友做了一个springboot的小项目,需要发布到tomcat上去运行起来,但是打包的时候却发现,只能打包成jar包的形式,无法打包成war包,今天把自己的解决方案写下来,以供参考(eclipse版本):      ...

东哥_Jeffery的博客 1万+

springboot抛弃tomcat容器不用提供web端口,且可以保留依赖

作者:黄小厮 来源:优快云 原文:https://blog.youkuaiyun.com/dwade_mia/article/details/82776125 版权声明:本文为博主原创文章,转载请附上博文链接! 让spring boot抛弃tomcat容器。 解决方法 网上提供了很多方法,无外乎是去掉 servlet 或者 spring-web jar包依赖,如果我们项目中不需要这些倒也无所谓,如果模块之...

a704397849的博客 8462
上一篇: 18 个常用 Shell 脚本!!(下)
下一篇: 运维朋友最喜欢的一集:trzsz-ssh!!
架构文摘JGWZ
博客等级 码龄5年 8808粉丝 345原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值