SpringBoot中使用Tomcat、Undertow、jetty等容器

news2024/11/13 12:34:47

文章目录

  • SpringBoot中使用Tomcat、Undertow、jetty等容器;
    • 1. 默认使用Tomcat容器,直接运行项目即可:Java -jar xxx.jar
    • 2. 使用undertow容器
      • 2-1 引入Maven依赖,同时屏蔽内置Tomcat
      • 2-2 Undertow容器的常用配置参考
      • 2-3 一个特别的报错警告及处理方法
        • 2-3-1 新增一个component注解的类,如下:
      • 2-4 启动,观察控制台即可验证
    • 3. 使用jetty容器
      • 3-1 引入Maven依赖,同时屏蔽内置Tomcat
      • 3-2 jetty容器的常用配置参考
      • 3-3 启动SpringBoot应用,即可发现jetty已开始运行

SpringBoot中使用Tomcat、Undertow、jetty等容器;

1. 默认使用Tomcat容器,直接运行项目即可:Java -jar xxx.jar

# Tomcat的一些配置参数调优参考
server:
  tomcat:
    uri-encoding: UTF-8
    #最小线程数
    min-spare-threads: 500
    #最大线程数
    max-threads: 2500
    #最大链接数
    max-connections: 6500
    #最大等待队列长度
    accept-count: 1000
    #请求头最大长度kb
    max-http-header-size: 1048576
    #请请求体最大长度kb
    #max-http-post-size: 2097152
  #服务http端口
  port: 8080
  #链接建立超时时间
  connection-timeout: 12000
  servlet:
    #访问根路径
    context-path: /song

2. 使用undertow容器

2-1 引入Maven依赖,同时屏蔽内置Tomcat

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 默认是使用的tomcat -->
    <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>

2-2 Undertow容器的常用配置参考

#undertow容器配置开始
# 是否打开 undertow 日志,默认为 false
server.undertow.accesslog.enabled=false
# 设置访问日志所在目录
server.undertow.accesslog.dir=logs
# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
server.undertow.threads.io=8
# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
server.undertow.threads.worker=256
# 设置 HTTP POST 内容的最大长度,默认不做限制
server.undertow.max-http-post-size=4MB
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理;
server.undertow.buffer-size=1024
# 是否分配的直接内存(NIO直接分配的堆外内存)
server.undertow.direct-buffers=true
#undertow容器配置结束

# 其他配置可以先看springboot的autoconfig配置类这块的配置:
# org.springframework.boot.autoconfigure.web包下的ServerProperties
# 		、servlet、embedded的undertowxxx类

2-3 一个特别的报错警告及处理方法

解决使用undertow容器报io.undertow.websockets.jsr -
UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used

2-3-1 新增一个component注解的类,如下:

@Component
public class UndertowPoolCustomizer implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {

    @Override
    public void customize(UndertowServletWebServerFactory factory) {
        factory.addDeploymentInfoCustomizers(deploymentInfo -> {
            WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
            webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 1024));
            deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
        });
    }
}

2-4 启动,观察控制台即可验证

在这里插入图片描述

3. 使用jetty容器

3-1 引入Maven依赖,同时屏蔽内置Tomcat

<!--web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!--排除spring-boot-starter-tomcat依赖-->
    <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>

3-2 jetty容器的常用配置参考

server.port=8080
server.servlet.context-path=/home
 
# Jetty 启用处理请求的线程数,设置值小于或等于处理器的2倍,要使用的接受线程数
server.jetty.acceptors=100
# 设置Jetty post content 大小,单位为byte
server.jetty.max-http-post-size=0
# 设置Jetty selectors 线程数,要使用的选择器线程数
server.jetty.selectors=10

3-3 启动SpringBoot应用,即可发现jetty已开始运行

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能---D分离

D分离&#xff08;D-Separation&#xff09;是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法&#xff0c;D-Separation更加直观&#xff0c;且计算简单。对于一个DAG&#xff08;有向无环图&#xff09;E&#xff0c;D-Separation方法可以快速的判断出两个节点…

c++11 标准模板(STL)(std::basic_streambuf)(三)

定义于头文件 <streambuf> template< class CharT, class Traits std::char_traits<CharT> > class basic_streambuf; 类 basic_streambuf 控制字符序列的输入与输出。它包含下列内容并提供到它们的访问&#xff1a; 1) 受控制字符序列&#xff…

在Android手机上安装kali Linux 的 QA

本文仅提供在安装时遇到问题的解决方案&#xff0c;查看安装链接请进入教程页面。 教程 https://www.hestudio.net/posts/install-kali-on-android-renew.html 一些命令 这里只说明我的教程涉及到的命令&#xff0c;查看其他博主教程的命令请转到对应博主的文档里查看&…

Linux 学习记录38(C高级篇)

Linux 学习记录38(C高级篇) 本文目录 Linux 学习记录38(C高级篇)一、shell中的分支语句1. case...in语句2. shell中的通配符 二、shell中的循环结构1. while循环2. shell中的printf3. for循环(1. 类似C中的格式(2. shell中的格式(3. 连续列表 4. select ...in 语句5. 辅助控制关…

PyQt学习(二)-----图形的建立(柱状图,折线图,堆叠柱状图,饼图)

数据库列表如图所示&#xff0c;如何对其进行绘图&#xff1a; &#xff08;一&#xff09;柱状图的建立 (1)柱状图初始化 self.__iniBarChart() pyqtSlot()def __iniBarChart(self):chart QChart()chart.setTitle("Barchart 演示")chart.setAnimationOptions(QChar…

md5的特点以及加密原理

MD5的特点及加密原理 简介特点1.长度固定2.结果不可逆3.高度离散性4.抗碰撞性 适用场景1.用户密码保护2.文件传输完整性校验3.数字签名4.云盘秒传 加密原理一.1.对输入的内容进行补位使其长度变成 N * 512 448 &#xff08;即长度对512取余之后 余数为448&#xff09;2.再往后补…

【数据可视化】大作业(意向考研高校的数据可视化)

文章目录 前言一、数据介绍1.1 基本信息1.2 考研信息1.3 导师信息 二、预处理及分析2.1 数据预处理2.1.1 考研信息预处理2.1.2 导师信息预处理 2.2 数据分析 三、可视化方法及结果3.1 可视化方法3.2 可视化结果展示3.2.1 基本信息3.2.2 考研信息3.2.3 导师信息 四、总结五、附录…

pip install安装CPM-Bee出现ModuleNotFoundError: No module named ‘torch‘的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

WPF开发txt阅读器18:用json格式存储配置文件

文章目录 json参数保存 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录&#x1f48e;快捷键翻页字体控件绑定&#x1f48e;前景/背景颜色书籍管理系统&#x1f48e;用树形图管理书籍语音播放&#x1f48e;播放进度显示&#x1f48e;快进…

网工大题题型总结(2)---设备类型及设备故障问题

&#xff08;一&#xff09;设备选择 2018年上半年 试题一 根据表 1-1 及图 1-1 可知&#xff0c;在图 1-1 中为了保护内部网络&#xff0c;实现包过滤功能&#xff0c;位置A 应部署(6)设备&#xff0c;其工作在(7)模式. &#xff08;6&#xff09;防火墙 &#xff08;7&a…

AIGC教育(续篇):探索掌握AIGC,引领未来的人才之路

&#xff08;本文阅读时间&#xff1a;5 分钟&#xff09; 1 未来人才的核心竞争力&#xff1a; 蓬勃绽放的潜力 展望未来&#xff0c;我们不禁思考&#xff1a;当自动化工具日益普及&#xff0c;且代替人力的成本并不高昂时&#xff0c;每个人的工具属性在未来工作中所占比重必…

Git提交规范

目录 1、commit message format消息格式 2、还原 3、提交类型 4、Subject 5、Body 6、Footer 7、git-commit-plugin 插件 以下规范参考Angular提交的规范。 对于如何格式化git commit消息&#xff0c;我们有非常精确的规则。 这导致更多 在浏览项目历史时&#xff0c;易…

【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 这个 Bug 是我做这个工程时遇到的&#xff1a;【Visual Studio】Qt 的实时绘图曲线功能&#xff0c;使用 C 语言&#xff0c;配合 Qt 开发串口通信界面。 文…

【面试】标准库相关题型(一)

文章目录 1. vector底层实现原理1.1 类构成1.2 构造函数1.3 插入元素1.4 删除元素1.5 读取元素1.6 修改元素1.7 释放空间 2. vector内存增长机制2.1 特点2.2 内存增长特性2.3 内存增长过程2.4 内存清理2.5 注意事项 3. vector中reserve和resize的区别3.1 共同点3.2 区别3.3 应用…

LangChain入门介绍

原文首发于博客文章LangChain介绍 我们先看看官方的定义 LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序&#xff1a; 数据感知&#xff1a;将语言模型连接到其他数据源自主性&#xff1a;允许语言模型与其环境进行交互 LangChain的主要价值在于&…

现在可以使用开发者工具为苹果Vision Pro创建空间体验

库比蒂诺&#xff0c;加利福尼亚—苹果公司今天宣布&#xff0c;全新的软件工具及技术现已可供开发者使用&#xff0c;它们能够用于为苹果首款空间计算机—Apple Vision Pro&#xff0c;创造出独特且前所未有的应用体验。Vision Pro具备visionOS&#xff0c;这是全球首款空间操…

【ABAP】数据类型(三)「数据字典数据类型」

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

Unity简单的移动相机

Unity3D制作一个会移动的方块&#xff08;还不会移动照相机&#xff09;_SMG_DSG的博客-CSDN博客 接着上一次的文章代码&#xff0c;我们继续写&#xff0c;其实简单的移动也是非常简单&#xff0c;我们只需要使用一个相机一直面对着方块的函数就行了 好了&#xff0c;废话不…

Tkinter之窗口布局介绍

Tkinter之窗口布局介绍 关于Python 的Tkinter窗口基础可参见https://blog.csdn.net/cnds123/article/details/127227651 Tkinter 之几何管理器&#xff08;geometry manager&#xff09;&#xff0c;也叫布局&#xff08;layout&#xff09;&#xff0c;是用来控制窗体中小部…

STM32单片机(八)DMA直接存储器存取----第二节:DMA直接存储器存取练习(DMA数据转运和DMA+AD多通道)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…