undertow

随着Java EE 7的到来以及处理诸如Web Sockets API和HTTP升级(例如EJB over HTTP)之类的高级功能的要求,WildFly开发团队已经做出了重要决定。 在长期致力于JBoss Web服务器(Apache Tomcat的一个分支)之后,新版本的应用程序服务器现在基于名为Undertow的新Web服务器。

Undertow是一种基于Java的灵活,快速的Web服务器,它基于J2SE新输入输出(NIO) API。 Undertow是围绕基于组合的体系结构设计的,该体系结构允许您通过组合称为处理程序的小型单个组件来构建功能全面的Web服务器。 这些处理程序链接在一起以形成功能齐全的Java EE servlet 3.1容器或嵌入在您的代码中的更简单的HTTP Process处理程序。

从下图中可以看到,一个处理程序链由几个单独的处理程序组成,这些处理程序最终会产生Servlet响应或错误,例如,在找不到请求的Path的情况下:

Undertow Web服务器还可以灵活地在非阻塞异步处理程序之间进行选择,以处理任务,或将请求委托给由线程池支持的阻塞处理程序。

现在,我们将了解Web服务器的配置,因此只需打开您的配置文件(任何独立的配置文件或domain.xml ),然后移至默认情况下如下所示的“ undertow ”子系统:

<subsystem xmlns="urn:jboss:domain:undertow:1.0"><buffer-caches><buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10" /></buffer-caches><server name="default-server"><http-listener name="default" max-post-size="10485760" socket-binding="http" /><host name="default-host" alias="localhost"><location name="/" handler="welcome-content" /></host></server><servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only"><jsp-config /><persistent-sessions path="persistent-web-sessions" relative-to="jboss.server.data.dir" /></servlet-container><handlers><file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true" /></handlers>
</subsystem>

Undertow配置的关键要素之一是缓冲区缓存。 缓冲区本质上是一个内存块,您可以在其中写入数据,然后可以在以后再次读取。 该内存块包装在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用该内存块。 使用缓冲区的明显优势是内存访问比物理访问快得多。

除了Java NIO外,WildFly还大量使用XNIO( http://www.jboss.org/xnio ),它是一个低级I / O层,可在任何地方使用以简化NIO API的使用。 它解决了使用选择器的一些复杂问题,以及对多播套接字和非套接字I / O(如串行端口)的NIO缺乏支持,同时仍保留了NIO中提供的所有功能。

为了管理Undertow Web服务器,请从管理控制台中选择“配置文件”选项卡,然后移至“ Web”面板。 它包含一组标签,例如:

  • Web服务:用于指定一些核心Web服务设置,例如WSDL主机和端口
  • Servlets :用于指定是否使用开发模式(默认为false),该模式允许即时重新加载JSP。
  • HTTP :用于配置Undertow HTTP连接器。 例如,您将从此处将Web服务器与IO资源池相关联
  • Undertow Core :用于将处理程序和过滤器关联到HTTP连接。

配置Web服务器池

如果您来自JBoss AS 7环境,则这是您配置中的一部分,将进行更改。 在应用程序服务器的早期版本中,您曾引用线程执行器来调整Web服务器的线程池。 另一方面,对于WildFly 8,您需要引用一个需要在IO子系统中创建的Worker元素。 让我们看看如何做。 展开左树菜单中的“核心”选项,然后选择“ IO ”,如下图所示:

需要从主面板中选择“ Worker ”面板。 如您所见,“默认”工作程序已经存在。 您可以随时单击相应的按钮来创建或删除新的。 但是,现在我们将单击“编辑”链接,以便我们自定义默认工作线程中要使用的线程数。 单击链接后,我们将编辑以下属性:

第一个参数,堆栈大小对应于Web服务器线程堆栈大小。 使用更大的线程堆栈大小,Web服务器将消耗更多资源,因此可以支持更少的用户。 任务保持活动状态(默认为60)控制等待来自同一连接上的同一客户端的下一个请求的秒数。 使用Keep-Alives,浏览器可以在第一个请求之后消除每个请求的完整往返,通常将整个页面的加载时间减少了一半。

Io线程数与可用的Web服务器线程数相对应。 这是一个重要的调整参数,对于流量较高的Web应用程序,需要增加此参数。 任务最大线程数可以控制并发请求的最大数量。 如果您对IO Worker的配置满意,请单击“保存”

现在我们已经定义了Worker,我们将需要从Web服务器端引用它。 为此,从左侧树菜单中展开Web子系统,然后选择HTTP选项。 在那里,您将能够配置HTTP服务器特有的一些属性:

单击表中包含的“默认”元素,并检查Worker元素是否与您的IO Worker关联。 工作人员也需要启用才能使用。 接下来,我们需要将HTTP侦听器与套接字绑定相关联(请从“常规配置”左侧菜单中选择“套接字绑定”选项,以检查您的配置可用的套接字绑定)。 最后,HTTP服务器也绑定到Java NIO缓冲池实现,下一部分将对此进行讨论。

一旦完成HTTP的工作程序配置,Web服务器将使用其工作程序线程,这些线程根据以下条件命名: [工作程序名称]-[工作程序ID]。 从下图中可以看到,用户定义了一个名为“ custom ”的工作程序,该工作程序已通过JConsole实用程序的“ Threads”部分(包含在JDK标准版本中)进行了监视:

配置Web服务器缓冲池

正如我们所说的,Undertow基于Java NIO API,并利用了J2SE的池

需要缓冲时,请使用java.nio.ByteBuffer

缓冲区是一个对象,其中包含一些要写入或刚刚读取的数据。 在NIO中添加Buffer对象标志着新库和原始I / O之间最显着的差异之一。 在面向流的I / O中,您曾经将数据直接写入Stream对象,或直接从Stream对象读取数据。 在NIO库中,所有数据都由Buffers处理。 读取数据时,会将其直接读取到缓冲区中。 写入数据时,会将其写入缓冲区。 每当您在NIO中访问数据时,就将其从缓冲区中拉出。

可以通过选择“核心” |“底层”来配置Undertow IO缓冲池 IO左侧菜单,以及“缓冲池”选项,如下图所示:

单击“默认”缓冲池行,您将可以在其中配置以下元素:

每片缓冲区 此参数定义每个分片分配多少缓冲区。 切片用于处理大缓冲区的子部分,从而避免了处理整个缓冲区的开销
直接缓冲区 通过此选项,您可以选择是否将缓冲区设置为直接缓冲区。 直接缓冲区的特征是它们是在Java堆之外分配的。 因此,一旦分配,它们的内存地址在缓冲区的生命周期内是固定的。 拥有固定的内存地址会导致内核可以安全地直接访问它们,因此,可以在I / O操作中更有效地使用直接缓冲区
缓冲区大小 此选项使您可以定义java.nio.ByteBuffer的大小。 假设正在使用直接缓冲区,则如果需要最大性能,则默认的16kb缓冲区是最佳的(因为这对应于Linux上的默认套接字缓冲区大小)。

此摘录摘自“ Wildfly 8 Book ”,这是一本实用且易于理解的指南,讨论了最流行的开源Java应用程序服务器: JBoss Wildfily (从JBoss AS重命名)。 本书涵盖了这个令人兴奋的新版本应用服务器的管理和管理方面的所有细节。 该书专门针对应用服务器的管理工具,为您介绍了所有最新的体系结构和性能更改。 您将从基本的服务器配置过渡到更高级的群集,JDBC连接,日志记录等技术。

翻译自: https://www.javacodegeeks.com/2014/01/entering-undertow-web-server.html

undertow

undertow_进入Undertow Web服务器相关推荐

  1. undertow服务器分析_进入Undertow Web服务器

    undertow服务器分析 随着Java EE 7的到来以及处理诸如Web Sockets API和HTTP升级(例如EJB over HTTP)之类的高级功能的要求,WildFly开发团队已经做出了 ...

  2. undertow 怎么创建线程_springboot项目中使用undertow web服务器

    Untertow 的特点 Servlet4.0 支持:它提供了对 Servlet4.0 的支持. WebSocket 支持:对 Web Socket 完全支持,包括JSR-356,用以满足 Web 应 ...

  3. WildFly8(JBoss)默认web服务器-------Undertow

    Java微服务框架之Undertow 一.Undertow简介: Undertow 是红帽公司(RedHat)的开源产品,是 WildFly8(JBoos) 默认的 Web 服务器. 官网API给出一 ...

  4. 高性能非阻塞Web 服务器Undertow

    概述 WildFly 8 包含了一个全新的Web服务器(Undertow),WildFly 8 默认的Web服务器为Undertow.一句话概括什么是Undertow - 高性能非阻塞 Web 服务器 ...

  5. 吊打tomcat的高性能web服务器undertow

    一,undertow介绍 1,undertow简介: Undertow是RedHAT红帽公司开源的产品,采用Java开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wil ...

  6. Servlet 容器和 Web 服务器的区别

    目录 1.什么是Web服务器? 2.什么是Servlet容器? 3.Servlet 容器与Web服务器的区别和联系 1.什么是Web服务器? Web 服务器是一种提供 Web 服务的软件,主要用于接收 ...

  7. Undertow web容器

    Undertow web容器 一.Undertow 介绍 二.使用undertow 2.1.依赖添加 2.2.在启动类,配置undewtow-server bean 2.3.对比Tomcat启动日志输 ...

  8. Tengine Web服务器概述

    Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...

  9. 2021年大数据ELK(二十二):采集Apache Web服务器日志

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 采集Apache Web服务器日志 一.需求 二.准备日志数据 三.使用Fil ...

最新文章

  1. android如何查看方法属于哪个类,Android Studio查看类中所有方法和属性
  2. 最短路径—Dijkstra算法和Floyd算法
  3. django 的用户验证及登录状态保持
  4. linux io重定向指令,Linux基础知识之 IO重定向
  5. Java日期时间类型
  6. 基于netty的微服务网关_基于Rx-netty和Karyon2的云就绪微服务
  7. 完全开源版可乐个人发卡网无授权完整运营版/整合最新免签约支付接口
  8. 摩拜女程序员状告其前端负责人性骚扰!
  9. GitHub+Hexo 搭建个人网站
  10. L1-073 人与神 (5 分)-PAT 团体程序设计天梯赛 GPLT
  11. Android USB audio on Android platform
  12. Oracle merge into 使用记录
  13. 数据库表结构设计方法及原则
  14. linux看磁盘是sas还是sata吗,sas硬盘和sata硬盘区别能用在普通台式机上吗
  15. python运行系统找不到指定文件_系统找不到指定文件怎么解决
  16. 我科学家研制“龙虾壳”新型仿生材料
  17. 【零信任落地案例】启明星辰中国移动某公司远程办公安全接入方案
  18. 自媒体推广该怎么做?学懂这10招,走路横着走
  19. SAP上传图片LOGO(SE78/SMW0)
  20. go使用zap + lumberjack重构项目的日志系统

热门文章

  1. Mockito的@Mock与@MockBean
  2. 浙江理工2015.12校赛-A
  3. 查看CentOS系统版本、内核版本、计算机名
  4. Windows 10中重命名文件和文件夹的6种方法
  5. 机械师创物者16评测 怎么样
  6. 教你调整视频时长,多个视频同时操作的视频剪辑教程
  7. java事务四大特性ACID
  8. 事务四大特性及实现原理
  9. PS高阶操作之羊皮卷材质
  10. 绝地服务器维护7月5日,绝地求生7月5日更新到几点 更新维护公告