Undertow学习

Undertow介绍

Undertow是一个用java编写的灵活、高性能的web服务器,提供基于NIO的阻塞和非阻塞API。
Undertow有一个基于组合的体系结构,允许您通过组合小型单用途处理程序来构建web服务器。为您提供了在完整的Java EE servlet 4.0容器或低级别非阻塞处理程序之间进行选择的灵活性。
Undertow被设计为完全可嵌入,具有易于使用的流畅构建器API。Undertow的生命周期完全由嵌入应用程序控制。
Undertow由JBoss赞助,是Wildfly应用服务器中的默认web服务器。

官方资源和相关网址

官方网站

Undertow Homepage

GitHub仓库

Undertow on GitHub

文档

Undertow Documentation

相关项目和集成

WildFly - 一个流行的Java应用服务器,内置了Undertow作为其Web服务器。

Spring Boot - 提供了对Undertow的支持,可以作为嵌入式服务器使用。

主要特点

模块化设计:Undertow的核心非常小,它通过组合不同的功能模块来构建完整的Web服务器。这种设计使得开发者可以根据需要选择和配置所需的功能。

高性能:Undertow使用非阻塞I/O和直接缓冲区,这使得它在处理大量并发请求时非常高效。它还支持HTTP/2,进一步提高了性能和效率。

灵活的部署:Undertow可以作为独立的Web服务器运行,也可以嵌入到Java应用程序中。它支持传统的WAR部署,也支持直接部署JAR文件。

全面的Servlet支持:Undertow完全兼容Servlet 3.1规范,支持异步Servlet、WebSocket和Servlet异步I/O。

易于配置:Undertow的配置可以通过编程方式进行,也可以通过XML或属性文件进行。这使得配置和管理变得简单直观。

使用场景

Undertow适用于需要高性能和灵活性的Web应用场景,特别是对于微服务架构和云原生应用。由于其轻量级和高性能的特点,Undertow常被用于构建高并发的Web服务和API。

为什么要选择Undertow?


HTTP/2支持 


Undertow支持HTTP/2开箱即用,无需覆盖所需的引导类路径。


HTTP升级支持


支持HTTP升级,允许在HTTP端口上多路传输多个协议。


Web套接字支持


Undertow提供了对Web套接字的全面支持,包括JSR-356支持。


Servlet 4.0


Undertow提供了对Servlet 4.0的支持,包括对嵌入式Servlet的支持。也可以在同一部署中混合使用Servlet和本机流下非阻塞处理程序。


可嵌入的


Undertow可以嵌入到应用程序中,也可以只需几行代码即可独立运行。


灵活的


Undertow服务器是通过将处理程序链接在一起进行配置的。可以根据需要添加尽可能多或尽可能少的功能。

示例代码1

以下是一个简单的使用Undertow创建Web服务器的示例:

public class HelloWorldServer {public static void main(final String[] args) {Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(new HttpHandler() {@Overridepublic void handleRequest(final HttpServerExchange exchange) throws Exception {exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");exchange.getResponseSender().send("Hello World");}}).build();server.start();}
}

代码来自:Undertow · JBoss Community

springboot 集成Undertow

pom.xml添加依赖
<dependencies><!-- 其他依赖 --><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency>
</dependencies>
application.yml 示例
server:# HTTP端口,默认为8080port: 8080 undertow:# 缓冲区大小buffer-size: 1024# 是否使用直接缓冲区direct-buffers: true # I/O线程数io-threads: 4# 工作线程数worker-threads: 8accesslog:# 是否启用访问日志enabled: true# 访问日志目录dir: ./logs/access
控制器示例
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DemoController {@GetMapping("/demo")public String demo() {return "Hello, Undertow!";}
}

访问http://localhost:8080/hello时,应该会看到“Hello, Undertow!”的响应。




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

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

相关文章

C# 设置PDF表单不可编辑、或提取PDF表单数据

PDF表单是PDF中的可编辑区域&#xff0c;允许用户填写指定信息。当表单填写完成后&#xff0c;有时候我们可能需要将其设置为不可编辑&#xff0c;以保护表单内容的完整性和可靠性。或者需要从PDF表单中提取数据以便后续处理或分析。 之前文章详细介绍过如何使用免费Spire.PDF…

PHP在线生成查询产品防伪证书系统源码

源码介绍 PHP在线生成查询产品防伪证书系统源码&#xff0c;源码自带90套授权证书模板&#xff0c;带PSD公章模板&#xff0c;证书PSD源文件。 环境要求&#xff1a;PHPMYSQL&#xff0c;PHP 版本请使用PHP5.1 ~5.3。 图片截图 源码安装说明 1.上传所有文件至你的空间服务器…

免费的端口映射工具哪个好用

端口映射&#xff0c;即从一个网络环境下的端口映射到另一个网络环境下访问的过程。通常由软件方式来提供这一过程的实现&#xff0c;或一些客户端工具。当涉及内外网时&#xff0c;如内网端口地址映射到外网地址&#xff0c;即是内网穿透的原理。免费的端口映射工具有哪些&…

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…

翻译《The Old New Thing》- The case of the exception that a catch (…) didn’t catch

The case of the exception that a catch (...) didnt catch - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20240405-00/?p109621 Raymond Chen 2024年04月05日 一位客户认为他们修复了一个bug&#xff0c;但他们仍然因为这个bug而崩溃。…

python django初步搭建(一)

记录一次简单的python django使用&#xff0c;后续调用api相关的暂时不想写。。。 一、环境 windows python 3.11.7 django 二、初步搭建 2.1 新建空文件夹 为了方便本次记录&#xff0c;新建了一个空的文件夹来使用。 直接在这里输入cmd 然后按下回车 2.2 安装virtual…

vue页面和 iframe多页面无刷新方案和并行存在解决方案

面临问题 : back的后台以jsp嵌套iframe为主, 所以在前端框架要把iframe无刷新嵌套和vue页面进行并行使用,vue的keep-alive只能对虚拟dom树 vtree 进行缓存无法缓存iframe,所以要对iframe进行处理 tab标签的切换效果具体参考若依框架的tab切换,可以去若依看源码,若依源码没有实…

C++设计模式——Proxy代理模式

一&#xff0c;代理模式简介 代理模式是一种 结构型设计模式&#xff0c;该模式通过引入一个新的代理对象Proxy&#xff0c;来间接访问原始对象&#xff0c;从而使访问方式变得灵活和可控。 代理对象的设定减少了客户端与真实对象之间的直接交互。 通过引入代理对象来间接访问原…

农资投入品系统架构:数字化农业的技术支撑与创新

在当今数字化时代&#xff0c;农业领域也在迅速迈向数字化和智能化的新阶段。农资投入品系统作为农业生产的重要支撑&#xff0c;其系统架构的设计与创新对于提高农业生产效率、保障粮食安全具有重要意义。本文将探讨农资投入品系统架构的设计原则、核心模块以及未来发展趋势。…

OrangePi AIpro测评:性能、应用与开发者体验解析

一、OrangePi AIpro介绍 OrangePi AIpro(8T)采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接32GB/64GB/128GB/256GB eMMC模块&#xff0c;支持双4K高…

AI虚拟试穿技术:开启高保真、多场景、多样化服装组合的试穿应用

随着电子商务的快速发展,消费者对于在线购物体验的要求越来越高。特别是在服装领域,消费者渴望能够在购买前直观地了解服装的试穿效果。传统的虚拟试穿技术虽然已有一定的发展,但在不同场景下的高保真度和鲁棒性方面仍面临挑战。为此,我们研发了一种全新的AI虚拟试穿技术,…

2.spring cloud gateway 源码编译

spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …

【分布式技术专题】「OceanBase深度解析」 探索OceanBase产品矩阵与核心设计

探索OceanBase产品矩阵与核心设计 OceanBase的六大特性高扩展高可用多租户&#xff08;资源隔离&#xff09;OceanBase架构和功能OceanBase广泛的数据源支持 OceanBase的六大特性 OceanBase以其卓越的产品平台整合方案&#xff0c;充分展现了六大核心特性的卓越与全面。这一方…

C++ | Leetcode C++题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {int n tokens.size();vector<int> stk((n 1) / 2);int index -1;for (int i 0; i < n; i) {string& token tokens[i];if (token.length() >…

人工智能将成为数学家的“副驾驶”

人工智能将成为数学家的“副驾驶” 数学传统上是一门独立的科学。1986年&#xff0c;安德鲁怀尔斯为了证明费马定理&#xff0c;退到书房里呆了7年。由此产生的证明往往很难让同事们理解&#xff0c;有些至今仍有争议。但近年来&#xff0c;越来越多的数学领域被严格地分解为各…

如何手动实现multiSetIfAbsent、multiExpire

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正!共同进步,共同成长✊”); 🌟System.out.println(“💡如果文章对您有所帮助,希望您可以三…

2024年大数据、区块链与物联网国际会议(ICBDBLT 2024)

2024 International Conference on Big Data, Blockchain, and Internet of Things 【1】大会信息 会议简称&#xff1a;ICBDBLT 2024 大会地点&#xff1a;中国青岛 审稿通知&#xff1a;投稿后2-3日内通知 会议官网&#xff1a;www.icbdblt.com 【2】会议简介 即将召开的…

DDoS攻击:企业与个人都应了解的基本知识

DDoS攻击&#xff0c;全称分布式拒绝服务攻击&#xff08;Distributed Denial of Service attack&#xff09;&#xff0c;是一种常见的网络安全攻击方式。以下是对DDoS攻击的详细解释: DDoS攻击是指攻击者利用大量被控制的计算机或设备&#xff08;通常称为“僵尸网络”或“傀…

签到的二维码怎么制作?快速实现制作二维码签到的方法

现在很多活动会采用二维码的方式来做登记、报名、签到等&#xff0c;通过二维码可以快速获取用户信息&#xff0c;并且对于用户填写内容也提升了便利性&#xff0c;而且还能够节约成本&#xff0c;通过后台就可以查看用户登记的数据&#xff0c;方便后期的分析和信息管理。 想…

考研计组chap3存储系统

目录 一、存储器的基本概念 80 1.按照层次结构 2.按照各种分类 &#xff08;41&#xff09;存储介质 &#xff08;2&#xff09;存取方式 &#xff08;3&#xff09;内存是否可更改 &#xff08;4&#xff09;信息的可保存性 &#xff08;5&#xff09;读出之后data是否…