springboot中使用undertow踩坑記(最新推薦)
場景:準備基于springboot的靜態(tài)資源實現(xiàn)mp4資源的播放,不同版本的springboot下效果不一樣,可能導致正常的資源不可用。本文測試了幾個版本,也針對這種情況提出了解決建議,希望對你的工作有所幫助。
眾所周知,springboot內置類web中間件,將web服務器管理權交給了容器。在使用時只需要進行申明即可。
本文實驗的環(huán)境如下:
windows7+JDK1.8+Eclipse+Maven3.3.9+SpringBoot2.2.x+Undertow2.2.x
一、環(huán)境準備
第一步、配置maven環(huán)境
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yelang</groupId> <artifactId>undertowdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Undertow測試</name> <description>Undertow中間件測試</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.10.RELEASE</version> <relativePath /> </parent> <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> <!-- 添加 Undertow 容器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency> </dependencies> </project>
第二步、配置申明
# 開發(fā)環(huán)境配置 server: # 服務器的HTTP端口,默認為8080 port: 8080 servlet: # 應用的訪問路徑 context-path: / # undertow 配置 undertow: # HTTP post內容的最大大小。當值為-1時,默認值為大小是無限的 max-http-post-size: -1 # 以下的配置會影響buffer,這些buffer會用于服務器連接的IO操作,有點類似netty的池化內存管理 # 每塊buffer的空間大小,越小的空間被利用越充分 buffer-size: 512 # 是否分配的直接內存 direct-buffers: true threads: # 設置IO線程數(shù), 它主要執(zhí)行非阻塞的任務,它們會負責多個連接, 默認設置每個CPU核心一個線程 io: 8 # 阻塞任務線程池, 當執(zhí)行類似servlet請求阻塞操作, undertow會從這個線程池中取得線程,它的值設置取決于系統(tǒng)的負載 worker: 256 # # tomcat 配置 # tomcat: # # tomcat的URI編碼 # uri-encoding: UTF-8 # # tomcat最大線程數(shù),默認為200 # max-threads: 500 # # Tomcat啟動初始化的線程數(shù),默認值25 # min-spare-threads: 30
第三步、靜態(tài)資源映射
package com.yelang.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 通用配置 * @author wzh */ @Configuration public class ResourcesConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** 本地文件上傳路徑 */ registry.addResourceHandler("/profile/**").addResourceLocations("file:D:/wzh/uploadPath/"); /** swagger配置 */ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
以上代碼標注了系統(tǒng)對外開放的靜態(tài)資源,正常情況下,將資源拷貝到相應的目錄下,就可以訪問相應資源。
http://localhost:8080/profile/2.mp4
二、使用springboot2.2.11、springboot2.2.12、springboot2.2.13這三個版本正常mp4也會無法加載。估計是這幾個版本存在一些設置。
三、如果是生產采用了上述幾個版本的sringboot,如果需要對mp4等資源進行預覽查看的話。
建議如下:第一、調整springboot的版本,調整到支持的版本。第二、不再使用profile的方式提供視頻資源,采用nginx等組件。第三、采用第三方文件系統(tǒng)。第四種、將undertow容器替換成tomcat等其他容器也可以。
小調查:在你的生產環(huán)境中,是使用內置容器嗎?使用undertow這種nio的容器的有多少?歡迎大家反饋。
到此這篇關于springboot中使用undertow踩坑記的文章就介紹到這了,更多相關springboot使用undertow內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何使用Spring AOP的通知類型及創(chuàng)建通知
這篇文章主要給大家介紹了關于如何使用Spring AOP的通知類型及創(chuàng)建通知的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring AOP具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-12-12Springboot GET和POST請求參數(shù)獲取方式小結
Spring Boot GET和POST請求參數(shù)獲取是開發(fā)人員經(jīng)常需要解決的問題,本文主要介紹了Springboot GET和POST請求參數(shù)獲取方式小結,具有一定的參考價值,感興趣的可以了解一下2023-09-09如何利用JConsole觀察分析Java程序的運行并進行排錯調優(yōu)
從Java 5開始 引入了 JConsole。JConsole 是一個內置 Java 性能分析器,可以從命令行或在 GUI shell 中運行。您可以輕松地使用 JConsole(或者,它更高端的 “近親” VisualVM )來監(jiān)控 Java 應用程序性能和跟蹤 Java 中的代碼2015-12-12Springboot結合rabbitmq實現(xiàn)的死信隊列
為了保證訂單業(yè)務的消息數(shù)據(jù)不丟失,需要使用到RabbitMQ的死信隊列機制,本文主要介紹了Springboot結合rabbitmq實現(xiàn)的死信隊列,具有一定的參考價值,感興趣的可以了解一下2023-09-09淺談Spring Data如何簡化數(shù)據(jù)操作的方法
這篇文章主要介紹了看Spring Data如何簡化數(shù)據(jù)操作的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04idea 創(chuàng)建properties配置文件的步驟
這篇文章主要介紹了idea 創(chuàng)建properties配置文件的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01