需求缘起:在研究Spring Boot性能优化的时候,碰到了一个高性能Web服务器,本着学习了解的态度,和大家一起学习研究下,有何想法皆可在文章中下面进行评论探讨。
我们看着本章大纲:
(2)Undertow几个特点;
(3)相关链接及快速示例;
(4)Spring Boot中使用Undertow;
(5)Undertow之配置信息;
接下来我们看一下每个知识点。
(1)Undertow介绍;
Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。Undertow 是红帽公司的开源产品,是 Wildfly 默认的 Web 服务器。
Undertow 提供一个基础的架构用来构建 Web 服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器 API,完全兼容 Java EE Servlet 3.1 和低级非堵塞的处理器。
(2)Undertow几个特点;
(a)轻量化 - Undertow 是一个Web 服务器,但它不像传统的Web 服务器有容器的概念,它由两个核心jar包组成,使用API加载一个Web应用可以使用小于10MB的内存。
(b)HTTP Upgrade 支持 - 设计WildFly时一个重要的考虑因素是在云环境中减少端口数量的需求。在云环境中,一个系统可能运行了几百个甚至几千个WildFly实例。基于HTTP使用HTTP Upgrade可以升级成多种协议,Undertow提供了复用这些协议的能力。
(c)Web Socket 支持 - 对Web Socket的完全支持,用以满足Web应用现在面对巨大数量的客户端,以及对JSR-356规范的支持。
(d)Servlet 3.1 的支持 - Undertow支持Servlet 3.1,提供了一个机会来构建一个超越Servlet规范、对开发人员非常友好的系统。
(e)可嵌套性 - Web 服务器不在需要容器,我们只需要通过API在J2SE代码下快速搭建Web服务。
(3)相关链接及快速示例;
Undertow 社区主页(http://undertow.io/):包括Undertow相关的所有新闻,消息。
Undertow 源代码(https://github.com/undertow-io/):包括所有Undertow相关的代码
(4)Spring Boot中使用Undertow;
在spring boot中使用Undertow特别简单,只需要修改下咱们的pom.xml文件即可:
<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.kfit</groupId>
<artifactId>spring-boot-package-A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-package-A</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->
<java.version>1.8</java.version>
<!-- <start-class>com.kfit.App</start-class> -->
</properties>
<!--
spring boot 父节点依赖,
引入这个之后相关的引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加。
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version><!-- 1.4.1.RELEASE , 1.3.3.RELEASE-->
</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>
重新启动运用程序,查看控制台的输出信息,能够看到如下信息:
main] .UndertowEmbeddedServletContainerFactory :
main] io.undertow.websockets.jsr
main] io.undertow.servlet
(5)Undertow之配置信息;
Spring boot也为我们提供了Undertow常用的配置信息(在application.properties):
server.undertow.accesslog.dir= # Undertow access log directory.
server.undertow.accesslog.enabled=false # Enable access log.
server.undertow.accesslog.pattern=common # Format pattern for access logs.
server.undertow.accesslog.prefix=access_log. # Log file name prefix.
server.undertow.accesslog.rotate=true # Enable access log rotation.
server.undertow.accesslog.suffix=log # Log file name suffix.
server.undertow.buffer-size= # Size of each buffer in bytes.
server.undertow.buffers-per-region= # Number of buffer per region.
server.undertow.direct-buffers= # Allocate buffers outside the Java heap.
server.undertow.io-threads= # Number of I/O threads to create for the worker.
server.undertow.max-http-post-size=0 # Maximum size in bytes of the HTTP post content.
server.undertow.worker-threads= # Number of worker threads.
(6)参考资料
嵌入式Web服务器Undertow
http://www.oschina.net/p/undertow
JBoss 系列九十三: 高性能非阻塞 Web 服务器 Undertow
http://blog.csdn.net/kylinsoong/article/details/19432375
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
相关推荐
《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...
1. 创建第一个 Spring Boot 项目:从零开始创建一个简单的 "Hello, World!" 应用,理解 Maven 或 Gradle 项目的结构。 2. 使用 Spring Boot 的自动配置:探究如何利用自动配置来简化配置文件。 3. 开发 RESTful API...
综上所述,《Spring Boot 2 Recipes》这本书不仅是一本实用的技术手册,还是一本引导读者从零开始到精通 Spring Boot 2 的宝贵资源。无论是新手还是有经验的开发者,都能从中获得有价值的指导和启发。
对于已经具备一定Spring Boot使用经验但希望进一步深入学习、熟练掌握该框架特性的开发者而言,从零开始搭建一个完整的后端脚手架不仅有助于加深对Spring Boot的理解,还能提供一系列实用的解决方案。本文旨在通过...
Spring Boot提供了大量的自动化配置,帮助开发者减少样板代码和配置文件的编写,使得从零开始创建一个独立的、生产级别的Spring基础应用变得更加容易。 Spring Boot的几个核心知识点如下: 1. **Spring Boot简介**...
根据给定文件的信息,我们...通过以上学习路径,开发者可以从零开始逐步掌握Spring Boot及其相关技术栈,最终成为一名合格的Spring Boot开发者。在整个过程中,持续实践和参与开源项目对于提升技能也是非常有帮助的。
在这个"spring 小项目"中,你可能正在经历从零开始构建一个基于Spring Boot的应用程序的过程,包括设置基础环境、编写 HelloWorld 示例以及解决遇到的小问题。 首先,让我们深入了解一下Spring Boot的核心特点: 1...
- **构建RESTful服务**:如何从零开始创建一个简单的RESTful服务,包括处理HTTP请求、响应JSON数据等。 - **集成外部服务**:如邮件服务、消息队列、支付平台等,展示如何将Spring Boot应用与其他系统无缝连接。 ...
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application....
Spring Boot应用的开发通常从创建一个POM(项目对象模型)文件开始,这是Maven项目的基础。接着,开发者将编写代码,包括添加classpath依赖、main方法、控制器等。然后,运行示例,创建一个可执行的jar文件,最后将...
Spring Boot的特点是零配置、内嵌式服务器、自动配置等。开发者可以通过`application.properties`或`application.yml`文件覆盖默认属性。例如,要修改Spring MVC视图解析的前缀和后缀,可以在配置文件中设置: ```...
"springboot-demo.zip"是一个包含SpringBoot范例项目的压缩包,旨在帮助初学者从零开始学习如何搭建SpringBoot项目。通过这个压缩包,我们可以了解SpringBoot的基本结构、配置、依赖管理以及如何运行和测试...
【尚硅谷尚融宝项目手敲代码】是一个与Java和SpringBoot相关的编程实践项目,它提供了从零开始构建一个实际应用的机会。在这个项目中,我们可以深入理解如何利用这两个技术栈来设计和实现一个完整的系统。 Java是...