Undertow是一个Web服务器,那么它就需要具备的现代Web服务器的基本特性,比如Servlet,JSP,文件服务器,代理服务器,安全认证等。undertow目前已经实现了绝大多数功能,并且因为wildfly通过了JavaEE7 TCK认证,所以可以说Undertow是一个通过Servlet 3.1认证的Web服务器和容器。这篇文章只分析Undertow的主干流程上的主要功能,即undertow-core和undertow-servlet。
1、简介
Undertow是一个非常轻量并高性能的web server,它来自 JBoss。支持blocking和non-blocking两种NIO API。
由于它是用Java写的,所以它可以被那些JVM-based 的应用通过内嵌的方式来使用。甚至JBoss的WilfFly服务器在内部使用Undertow来提高服务器的性能。
在本文中,我们将介绍Undertow的主要功能并给出使用代码。
2. 为什么要选择Undertow?
3. 使用Undertow
不多说,让我们使用Undertow来创建一个简单的web server吧!
3.1. Maven 依赖
加入如下依赖:
要构建一个可运行的jar,我们还需要添加一个maven-shade-plugin。像下面这样:
最新版的Undertow已经放到了maven 中央仓库,随便玩耍吧。
3.2. 简单的Server
仅仅需要下面的几行代码,就可以创建一个简单的web server,Undertow的入口使用的是Builder API。
这里我们使用Builder API把server绑定到8080端口上。同时我们使用了lambda表达式配置了一个handler。你也可以不用lambda表达式做同样的事情:
最主要的事情就是这里对HttpHandler API的使用。这个是根据我们的需要定制Undertow应用程序的最重要的武器。
在这里,我们添加了一个自定义的handler,逻辑就是让每个request都有一个Content-Type: text/plain response header。
同样的,如果你想让每个response都返回默认的text文本,你可以像下面这样来定义:
3.3.安全访问
在大多数情况下,我们不希望所有的用户都可以访问我们的server。通常,只有那些携带了合法“护照”的才可以访问。在Undertow上,我们同样可以实现这样的机制。
要想实现这个,我们只需要创建一个认证管理器,这个管理器会检查每个请求的用户信息。
下面我们就来实现一个自定义的IdentityManager:
一旦认证mananger被创建,我们需要创建一个“领地”来保存用户的信息。
这里我们使用了 AuthenticationMode.PRO_ACTIVE,表示每个来到这个server的请求都将会经过我们指定的认证机制来踊跃的进行认证。
如果我们使用了AuthenticationMode.CONSTRAINT_DRIVEN模式,那么只有那些被明确要求过滤的请求才会经过认证机制。
现在,我们只需要把保存用户信息的“领地”和认证管理器关联起来就可以了。
截止目前,我们已经创建了两个用户实例。一旦server启动了以后,要想访问,我们就需要使用这个两个证书才行。
3.4. Web Socket
使用Undertow的WebSocketHttpExchange API创建web socket exchange channel 同样非常简单。
下面,我们就打开一个socket通信channel,在/importsourceApp path上:
然后我们就可以创建一个HTML页面 index.html,然后使用js的WebSocket API来连接到这个channel上了。
3.5. File Server
使用Undertow,我们也可以创建一个文件服务器(file server),它可以显示目录内容,并直接从目录中提供文件:
你甚至都不需要穿件任何UI来显示目录。Undertow 为你提供了一个开箱即用的页面。
4. Spring Boot Plugin
Spring Boot把Undertow也内嵌进去了,作为继Tomcat和Jetty之后第三个内嵌的servlet 容器。要想在Spring Boot中使用Undertow只需要加下面的依赖就是了:
5. 总结
在本文中,我们了解了Undertow以及如何使用它创建不同类型的服务器。
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整