SpringBoot使用Undertow代替tomcat

Undertow 是基于java nio的web服务器,应用比较广泛,内置提供的PathResourceManager,可以用来直接访问文件系统;如果你有文件需要对外提供访问,除了ftp,nginx等,undertow 也是一个不错的选择,作为java开发,服务搭建非常简便

1. pom


   org.springframework.boot
   spring-boot-starter-web
   
   
      org.springframework.boot
      spring-boot-starter-tomcat
   
   

上面是 排除 tomcat 依赖(exclusions 一定使用)

下面是 添加 undertow 依赖


   org.springframework.boot
   spring-boot-starter-undertow

2.添加配置

# Undertow 日志存放目录
server.undertow.accesslog.dir=
# 是否启动日志
server.undertow.accesslog.enabled=false 
# 日志格式
server.undertow.accesslog.pattern=common
# 日志文件名前缀
server.undertow.accesslog.prefix=access_log
# 日志文件名后缀
server.undertow.accesslog.suffix=log
# HTTP POST请求最大的大小
server.undertow.max-http-post-size=0 
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
server.undertow.io-threads=4
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
server.undertow.worker-threads=20
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分
server.undertow.buffer-size=1024
# 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
#server.undertow.buffers-per-region=1024
# 是否分配的直接内存
server.undertow.direct-buffers=true

3. 添加测试代码

import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.handlers.resource.PathResourceManager;
public static void main(String[] args) {
    File file = new File("/");
    Undertow server = Undertow.builder().addHttpListener(8084, "localhost")
            .setHandler(Handlers.resource(new PathResourceManager(file.toPath(), 100))
                    .setDirectoryListingEnabled(true))
            .build();
    server.start();
}

 

参考:

链接:https://www.jianshu.com/p/558f4504d591

 

你可能感兴趣的:(spring)