Jetty、Undertow容器及war包部署到外置Tomcat容器

樵夫2021-08-23 15:23

上一节中我们了解到在SpringBoot项目中webServer默认支持的嵌入式容器是Tomcat,还可以切换到Jetty、Undertow。本节我们就将Tomcat切换到jetty、undertow容器。  

由于SpringBoot将Tomcat作为默认的应用容器,因此在使用Jetty和Undertow容器之前要先把Tomcat的jar包排除掉。  

<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>

使用Jetty容器:  

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

使用Undertow容器:  

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

关于pom.xml文件配置,我们需要知道以上三者的优先级顺序是:  

Tomcat>Jetty>Undertow  

使用Jetty、Undertow时,必须将Tomcat容器移除掉  

使用Undertow时,需要将Jetty的依赖移除掉,因为Jetty的优先级高于Undertow  

使用Jetty时,Undertow的依赖可以不移除  

配置参数  

在官方文档编号11中可以找到关于Jetty、Undertow的配置参数:  

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.server  

常用配置参数  

Jetty  

server.jetty.threads.acceptors 要使用的接受器线程数,默认值为-1
server.jetty.threads.selectors 要使用的选择器线程数,默认值为-1
server.jetty.threads.min 工作线程池最小线程数量,默认值为8
server.jetty.threads.max 工作线程池最大线程数量,默认值为200

Undertow  

server.undertow.threads.io 创建的 I/O 线程数。默认值来自可用处理器的数量
server.undertow.threads.worker 工作任务线程数。默认值是 I/O 线程数的 8 倍
server.undertow.url-charset 用于url解码的字符集,默认值为UTF-8

在application.yml文件中的写法  

Jetty  

server:
  port: 8888
  jetty:
    # 要使用的接受器线程数,默认值为-1
    acceptors: -1
    # 要使用的选择器线程数,默认值为-1
    selectors: -1
    # 工作线程池最小线程数量,默认值为8
    min-threads: 8
    # 工作线程池最大线程数量,默认值为200
    max-threads: 200

Undertow  

server:
  port: 8888
  undertow:
    # 创建的 I/O 线程数。默认值来自可用处理器的数量
    io-threads: 5
    # 工作任务线程数。默认值是 I/O 线程数的 8 倍
    worker-threads: 40
    # 用于url解码的字符集,默认值为UTF-8
    url-charset: UTF-8

Undertow的性能和内存使用方面都优于Tomcat,在高并发系统中,Tomcat相对来说比较弱。  

在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。  

在之前我们所有的应用代码都是用jar包的方式去运行的,下面我们来学习如何打war包。  

为了方便演示,重新创建一个SpringBoot项目。重新创建的过程与之前想同,需要注意的是打包方式这次直接选择war包:  

Jetty、Undertow容器及war包部署到外置Tomcat容器

新的项目创建好后,在com.example.demo文件夹下创建controller文件夹并在其中创建TemplateController.java  

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TemplateController {
    @GetMapping("/template")
    public String test(String name) {
        return "Hello " + name;
    }
}

之后在pom.xml中的build代码段添加应用最终构建打包的名称:  

<finalName>family</finalName>

在idea下方的Terminal中编写命令:  

mvn clean package

打包结果将存储在项目的target目录下面,将war包移动到Tomcat的webapps目录中。  

在tomcat的bin目录下执行startup.sh(linux)/startup.bat(windows)。  

由于Tomcat在占用的是8080端口,所以在浏览器进行测试时输入的链接应为:http://localhost:8080/family/template?name=world  

Jetty、Undertow容器及war包部署到外置Tomcat容器

得到返回结果。  

以上就是小编为大家整理发布的“Jetty、Undertow容器及war包部署到外置Tomcat容器”一文,更多相关内容尽在开课吧Java教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营