SpringBoot 改用undertow 替换自带tomcat

Posted Lite_-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 改用undertow 替换自带tomcat相关的知识,希望对你有一定的参考价值。

个人测试发现undertow 和 tomcat 性能都差不多,但是内存占用会少一点(大概少了10%),尝试换上去测一下,没发现什么毛病,下面记录一下切换使用的要点。

1. 排除tomcat 依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

 

2. 使用 jakarta.servlet-api

提示原文如下

the contracts between a servlet class and the runtime environment provided for an instance of such a class by a conforming servlet container. For versions prior to 4.0.2 these classes and interfaces are described by the Java Servlet API Specification. For version 4.0.2 and later they are described by the Jakarta Servlet Specification

我们使用undertow 依赖 jakarta.servlet-api 这个包,在4.0.2 版本之后改用到  jakarta.servlet-api 这个包,好处是包更小了。

            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>${jakarta-servlet.version}</version>
            </dependency>

在要使用 HttpServletRequest  的时候添加 Jakarta 依赖就可以了。

测试项目使用的springboot 版本为 2.2.2.RELEASE, Jakarta 版本为 4.0.3。

 

以上是关于SpringBoot 改用undertow 替换自带tomcat的主要内容,如果未能解决你的问题,请参考以下文章

为什么建议你替换掉 SpringBoot 框架中的 Tomcat ?

为啥很多SpringBoot开发者放弃了Tomcat,选择了Undertow?

Undertow技术:为啥很多Spring Boot开发者放弃了Tomcat

springboot应用如何提高服务吞吐量

重学SpringBoot系列之嵌入式容器的配置与应用

厉害了!我们老大半小时把我的springboot项目并发提升几倍