• Java基础之《undertow容器》


    一、什么是undertow

    1、undertow是springboot默认支持的三种servlet容器之一。
    tomcat、jetty、undertow

    2、undertow怎么读
    under-tow

    3、undertow是RedHat(红帽公司)的开源产品,采用java开发,是一款灵活、高性能的web服务器,提供了基于NIO的阻塞/非阻塞式APIs,也是WildFly(原名JBoss AS - JBoss Application Server)的默认web容器。

    4、官方网站
    https://undertow.io/index.html

    5、结构图

    分为:core组件、servlet组件、websocket组件,底层使用了XNIO。

    6、undertow目前有两个主要版本
    2.1:当前支持servlet 4.0,JDK8+的稳定版本
    1.4:当前支持servlet 3.1,JDK7的稳定版本

    二、undertow引入

    1、pom文件配置

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-webartifactId>
    4. <exclusions>
    5. <exclusion>
    6. <groupId>org.springframework.bootgroupId>
    7. <artifactId>spring-boot-starter-tomcatartifactId>
    8. exclusion>
    9. exclusions>
    10. dependency>
    11. <dependency>
    12. <groupId>org.springframework.bootgroupId>
    13. <artifactId>spring-boot-starter-undertowartifactId>
    14. dependency>

    2、application.yml文件配置

    1. server:
    2. port: 8442
    3. undertow:
    4. #HTTP POST请求最大的大小(0不限制)
    5. max-http-post-size: 0
    6. #设置IO线程数,它主要执行非阻塞的任务,它们会负责多个连接,默认设置每个CPU核心一个线程
    7. #不设置会自动调整
    8. io-threads: 4
    9. #阻塞任务线程池,当执行类似servlet请求阻塞操作,undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
    10. #不设置会自动调整
    11. worker-threads: 20
    12. ##以下配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    13. #每块buffer的空间大小,越小的空间被利用越充分
    14. buffer-size: 1024
    15. #是否分配的直接内存
    16. direct-buffers: true
    17. #undertow容器日志
    18. accesslog:
    19. #日志存放路径
    20. dir: D://
    21. #是否启动日志
    22. enabled: true
    23. #日志格式
    24. pattern: common
    25. #日志文件名前缀
    26. prefix: access_log
    27. #日志文件名后缀
    28. suffix: log

    三、undertow有什么优势

    1、undertow平均响应时间比tomcat更快

    2、undertow可以分组件按需引入

    四、springboot2里的不同

    io-threads和worker-threads配置已经过时了,更换成最新的写法

    1. server:
    2. port: 8002
    3. undertow:
    4. buffer-size: 1024
    5. direct-buffers: true
    6. threads:
    7. io: 8
    8. worker: 256

  • 相关阅读:
    Idea导入maven项目不自动识别
    【Qt QML】TabBar的用法
    Solidity智能合约事件(event)
    数据结构--单链表操作
    docker - window Docker Desktop升级
    【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解
    2022前端面试题整理总结~
    代码质量与安全 | 想在发布竞赛中胜出?Sonar来帮你
    KONICA MINOLTA China | 柯尼卡美能达-SMB扫描问题
    C++性能分析工具gperftools安装教程与使用案例分析
  • 原文地址:https://blog.csdn.net/csj50/article/details/127881292