在Spring Boot使用Undertow服务

2023-11-18

1.undertow简介

Undertow是RedHAT红帽公司开源的产品,采用JAVA开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器。在javaweb容器的世界里,Tomcat和jetty是大众熟知的,undertow目前逐步进入大众的视角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat。目前Undertow已经成为springboot 默认集成的三大容器之一。

2.undertow特点

undertow在高并发业务场景中,性能优于tomcat

  1. 高性能,在多款同类产品的压测对比中,高并发情况下表现出色。
  2. Servlet4.0支持,它提供了对Servlet4.0的支持。
  3. Web Socket完全支持,包含JSR-356,用以满足Web应用巨大数量的客户端。
  4. 内嵌式,它不需要容器,只需要通过api即可快速搭建Web服务器。
  5. 灵活性,交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。
  6. 轻量级,它是一个内嵌Web服务器,由两个核心jar包组成。

3.springboot集成的web服务器

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
    </parent>
    <groupId>com.konne</groupId>
    <artifactId>push-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>push-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <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>

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

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
   
</project>

配置启动成功显示如下信息:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.4)

2022-12-13 09:41:21.625  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : Starting PushDemoApplication using Java 1.8.0_202 on 2F-KF03 with PID 2416 (D:\i-word\push-demo\target\classes started by Administrator in D:\i-word\push-demo)
2022-12-13 09:41:21.628  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : No active profile set, falling back to 1 default profile: "default"
2022-12-13 09:41:22.226  WARN 2416 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2022-12-13 09:41:22.241  INFO 2416 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2022-12-13 09:41:22.241  INFO 2416 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 578 ms
2022-12-13 09:41:22.482  INFO 2416 --- [           main] io.undertow                              : starting server: Undertow - 2.2.19.Final
2022-12-13 09:41:22.486  INFO 2416 --- [           main] org.xnio                                 : XNIO version 3.8.7.Final
2022-12-13 09:41:22.490  INFO 2416 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.8.7.Final
2022-12-13 09:41:22.514  INFO 2416 --- [           main] org.jboss.threads                        : JBoss Threads version 3.1.0.Final
2022-12-13 09:41:22.544  INFO 2416 --- [           main] o.s.b.w.e.undertow.UndertowWebServer     : Undertow started on port(s) 8080 (http)
2022-12-13 09:41:22.552  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : Started PushDemoApplication in 1.217 seconds (JVM running for 1.807)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Spring Boot使用Undertow服务 的相关文章

  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

    我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题 我使用 selenium WebDriver 和 java 也遇到了同样的问题 我终于找到了解决方案 所以我将其发布在这里希望对其他人有所帮助 当我需
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它

随机推荐

  • iOS中.obj、.usdz、.dae和.scn格式之间的转化(思路清晰版)

    作者最近在写项目的过程中遇到了一些3d模型格式问题 故写下这篇文章记录一下解决问题的过程 示例 如果我们想用SceneKit库来实现在默认背景中展示一个3D模型 大致可以这样写代码 var sceneView SCNView var sce
  • 围圈数数淘汰游戏

    在围圈游戏中 规则是从某个数同时开始逆时针和顺时针走一定步长 淘汰对应索引的人员 则有两种情况可能顺逆时针轮到同一个人或许人不同 可以通过一个函数确定每走一步数数的索引值 用一个数组表示每个人是否out 的标志位 初始数组每个值为1 out
  • 编写表格树GridTree过程遇到的问题

    项目中用到不少的树和表格 但是要用到表格树的地方不是很多 但是有时候需要的时候却不好找到 所以就在闲暇的时候自己找了一下 结果发现了很简单的 但是不满足项目的需求 于是就看懂了别人的东西之后 再结合自己的理解 干脆就做一个表格树好了 从写下
  • Angular 6 安装到使用

    TOC 前端 Angular 6 安装到使用 1 下载nodejs 并安装到本地 配置好环境变量 访问nodejs的官方网站的downdolad 网址 https nodejs org en download npm v 查看是否安装成功
  • 强大的jQuery图表插件库Highcharts支持线性图、饼状图、柱状图、区域图、气泡图

    Highcharts是一个纯JavaScript编写的jQuery图表插件库 Highcharts提供了简单的方式为您的网站或项目添加动态图表 Highcharts支持线性图 饼状图 柱状图 区域图 气泡图等近20种图表类型 下载地址 ht
  • mybatis(19)——choose标签,when标签和otherwise标签

    代码
  • JMeter简单使用

    一 下载安装 1 在官网下载或者在 share 192 168 1 201 share 开发工具 java apache jmeter 5 5 zip 2 解压 执行文件在bin目录中 二 常用测试组件 1 线程组 线程组是JMeter 中
  • 服务配置宝塔面板搭建环境及部署项目

    服务配置宝塔面板搭建环境及部署项目 1 登录你所购买阿里云服务器的账号 2 点击控制台 云服务器ecs 3 开通安全组开启端口 把需要访问的端口进行配置 选入方向 如 6379 8080 3306 80 21 22 443 4 获取服务器公
  • FOC和SVPWM的C语言代码实现   

    FOC和SVPWM的C语言代码实现 SVPWM的原理讲解在这儿 https blog csdn net qlexcel article details 74787619 comments 现在开始分析C语言的代码 代码建议复制到notepa
  • 【UE4】DataTable - 数据表

    本文使用 UE 4 26 引擎自带 ARPG 项目 从代码和编辑器两个方面记录一下 UE4 中的 DataTable 也就是数据表的用法 一 DataTable 是什么 DataTable 就是数据表 以下简称 DT 也就是二维的 M 行
  • OLED透明屏轻量化设计:提升便携性与用户体验的新方向

    随着科技的不断进步 OLED透明屏作为一种新兴的显示技术正逐渐走入人们的视野 除了在视觉效果上的优势 OLED透明屏在重量方面的设计也备受关注 对此 尼伽将深入探讨OLED透明屏轻量化设计的重要性 策略以及应用案例 希望看后对您有所启发 一
  • 面试机试题目,使用Spring + SpringMVC +Mybatis + html + css实现员工管理系统

    文章目录 机试挑战 需求分析 简介 访问地址 http 39 99 237 90 8080 employee http 39 99 237 90 8080 employee 源码 https github com Listen Y Java
  • Visual C++中函数的覆盖和函数的隐藏

    我是荔园微风 作为一名在IT界整整25年的老兵 今天来聊聊Visual C 中函数的覆盖和函数的隐藏 Visual C 中函数的覆盖和函数的隐藏与JAVA有很大不同 有些容易搞错的点和概念 我们要特别注意 首先 先满足一下急性子的同学 因为
  • 思科模拟器:nat地址转换-静态转换-动态转换-pat转换

    我么需要的环境 sw1为公司出口 192开头的网段为内网也就是公司内部 1动态 缺点 只能外网访问内网 内网无法访问外网 2静态 缺点 比如有两个公网ip如果在有两个人上网的时候 第三个人无法上网 由于使用设备不固定所以 外网无法访问内网
  • https证书过期处理方案及相关问题

    证书过期处理 1 替换证书操作 2 问题及处理 1 替换证书操作 证书由甲方提供 也可以去阿里云进行申请 前往nginx安装目录下的 conf cert替换旧的证书 目录 nginx conf cert 重启nginx操作 https bl
  • Android 开发中的权限申请

    一 权限动态申请 我们都知道 从 Android 6 0 开始 部分危险权限在 xml 注册的同时 还需要动态申请 1 需要动态申请的权限 Manifest permission CONTACTS 联系人 Manifest permissi
  • Pytorch 学习(三)sigmoid 逻辑回归预测

    1 数据预处理 处理多特征样本 import pandas as pd data pd read csv csv 划分数据 iloc 第一个参数 行 第二个参数 列 X data iloc 1 标签为 1 1 讲 1 替换为 0 Y dat
  • Shell中的幽灵王者—JAVAWEB 内存马 【认知篇】

    Goby社区第 21 篇技术分享文章 全文共 6700 字 预计阅读时间 17 分钟 自我介绍 大家好 我是 su18 无论是个人博客还是社区 已经很久没写技术文章了 原因有很多 时间 精力 心态等等 但在开源社区也算比较活跃 由于工作需要
  • JSONUtil.toJsonStr 时间变成了时间戳

    问题描述 我的接口是以Date来接收日期的 然后我在拿到这个对象参数后 通过hutool当中的JSONUtil toJsonStr将其序列化成json字符串 然后存储到数据库 然后存储到数据库当中发现这个字段是时间戳 DateTimeFor
  • 在Spring Boot使用Undertow服务

    1 undertow简介 Undertow是RedHAT红帽公司开源的产品 采用JAVA开发 是一款灵活 高性能的web服务器 提供了NIO的阻塞 非阻塞API 也是Wildfly的默认Web容器 在javaweb容器的世界里 Tomcat