溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Spring Boot內嵌容器Undertow創建服務器

發布時間:2021-07-12 10:29:13 來源:億速云 閱讀:275 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關如何使用Spring Boot內嵌容器Undertow創建服務器的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

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?

  • 輕量級 :Undertow 是非常小的,只有不到1MB。在內嵌模式下,運行時只占heap空間的4MB左右。

  • Servlet 3.1:完美支持 Servlet 3.1

  • Web Socket :支持 Web Socket (包括JSR-356)

  • 長連接 :默認情況下 ,Undertow 通過添加keep-alive 的response header來支持長連接。它通過重用連接信息(connection details)來改善長連接的性能。

3. 使用Undertow

不多說,讓我們使用Undertow來創建一個簡單的web server吧!

3.1. Maven 依賴

加入如下依賴:

要構建一個可運行的jar,我們還需要添加一個maven-shade-plugin。像下面這樣:

如何使用Spring Boot內嵌容器Undertow創建服務器

最新版的Undertow已經放到了maven 中央倉庫,隨便玩耍吧。

3.2. 簡單的Server

僅僅需要下面的幾行代碼,就可以創建一個簡單的web server,Undertow的入口使用的是Builder API。

如何使用Spring Boot內嵌容器Undertow創建服務器

這里我們使用Builder API把server綁定到8080端口上。同時我們使用了lambda表達式配置了一個handler。你也可以不用lambda表達式做同樣的事情:

如何使用Spring Boot內嵌容器Undertow創建服務器

最主要的事情就是這里對HttpHandler API的使用。這個是根據我們的需要定制Undertow應用程序的最重要的武器。

在這里,我們添加了一個自定義的handler,邏輯就是讓每個request都有一個Content-Type: text/plain response header。

同樣的,如果你想讓每個response都返回默認的text文本,你可以像下面這樣來定義:

如何使用Spring Boot內嵌容器Undertow創建服務器

3.3.安全訪問

在大多數情況下,我們不希望所有的用戶都可以訪問我們的server。通常,只有那些攜帶了合法“護照”的才可以訪問。在Undertow上,我們同樣可以實現這樣的機制。

要想實現這個,我們只需要創建一個認證管理器,這個管理器會檢查每個請求的用戶信息。

下面我們就來實現一個自定義的IdentityManager:

如何使用Spring Boot內嵌容器Undertow創建服務器

一旦認證mananger被創建,我們需要創建一個“領地”來保存用戶的信息。

如何使用Spring Boot內嵌容器Undertow創建服務器

這里我們使用了 AuthenticationMode.PRO_ACTIVE,表示每個來到這個server的請求都將會經過我們指定的認證機制來踴躍的進行認證。

如果我們使用了AuthenticationMode.CONSTRAINT_DRIVEN模式,那么只有那些被明確要求過濾的請求才會經過認證機制。

現在,我們只需要把保存用戶信息的“領地”和認證管理器關聯起來就可以了。

如何使用Spring Boot內嵌容器Undertow創建服務器

截止目前,我們已經創建了兩個用戶實例。一旦server啟動了以后,要想訪問,我們就需要使用這個兩個證書才行。

如何使用Spring Boot內嵌容器Undertow創建服務器

如何使用Spring Boot內嵌容器Undertow創建服務器

如何使用Spring Boot內嵌容器Undertow創建服務器

3.4. Web Socket

使用Undertow的WebSocketHttpExchange API創建web socket exchange channel 同樣非常簡單。

下面,我們就打開一個socket通信channel,在/importsourceApp path上:

如何使用Spring Boot內嵌容器Undertow創建服務器

然后我們就可以創建一個HTML頁面 index.html,然后使用js的WebSocket API來連接到這個channel上了。

3.5. File Server

使用Undertow,我們也可以創建一個文件服務器(file server),它可以顯示目錄內容,并直接從目錄中提供文件:

如何使用Spring Boot內嵌容器Undertow創建服務器

你甚至都不需要穿件任何UI來顯示目錄。Undertow 為你提供了一個開箱即用的頁面。

如何使用Spring Boot內嵌容器Undertow創建服務器

4. Spring Boot Plugin

Spring Boot把Undertow也內嵌進去了,作為繼Tomcat和Jetty之后第三個內嵌的servlet 容器。要想在Spring Boot中使用Undertow只需要加下面的依賴就是了:

如何使用Spring Boot內嵌容器Undertow創建服務器

感謝各位的閱讀!關于“如何使用Spring Boot內嵌容器Undertow創建服務器”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女