本文主要是介绍jetty与Undertow,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Jetty
一、jetty的基本讲解
1、基本概念
jetty: Jetty是一个开源的servlet容器,它为基于Java的web容器,
例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以
一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速
为一些独立运行(stand-alone)的Java应用提供网络和web连接ps:要想使用则必须先安装且配置JDK
2、jetty的好处
①异步的 Servlet,支持更高的并发量 ②模块化的设计,更灵活,更容易定制,也意味着更高的资源利用率③在面对大量长连接的业务场景下,Jetty 默认采用的 NIO 模型是更好的选择④将jetty嵌入到应用中,使一个普通应用可以快速支持 http 服务⑤Jetty也被应用于一些知名产品中,例如ActiveMQ、Maven、Spark、GoogleAppEngine、Eclipse、Hadoopps:jetty是一个轻便,性能强悍的一个类似于tomcat的服务器中间件
3、jetty实现发布运行web项目
1.Eclipse配置jetty插件: 采用的是离线版的 直接即可复制即可2.创建一个web项目,可以是maven的,也可以不是maven的,直接使用即可选中项目,单击右键,参考:jetty的运行示意图.png
4、jetty部署web项目
1.准备工作:1)先去jetty的官网下载一个jetty的压缩包(其实jetty的官网就是eclipse的官网),然后放在到D:/tools下,然后解压,然后将解压之后的名字更改为jetty202001172.验证并运行官网给的示例: 参考图:jetty的验证并运行官网给的示例.png 输入指令: java -jar D:\tools\jetty20200117\jetty20200117/start.jar###部署web项目### 准备工作:准备一个web项目的war包 3.将war包放入到D:\tools\jetty20200117\jetty20200117\webapps文件夹下4.进入到D:\tools\jetty20200117\jetty20200117目录下,然后参考图:jetty部署web项目..png,输入指令: java -jar start.jar 即可看到部署成功了
5.修改端口号
6、jetty与Tomcat的区别
Jetty和tomcat的比较
相同点:Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。
不同点:架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。性能比较 Jetty和Tomcat性能方面差异不大 Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。 Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。 Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高;Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。 Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。其它比较 Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。 Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。
二、Undertow的基本讲解
1、基本概念
1.Undertow: Undertow(暗涌) 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器2.特点:轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心Jar包组成,加载一个 Web 应用可以小于 10MB 内存Servlet3.1支持:它提供了对Servlet3.1的支持(支持异步)WebSocket支持:对Web Socket完全支持,用以满足 Web 应用巨大数量的客户端嵌套性: 它不需要容器,只需通过API即可快速搭建Web服务器3.官网: https://undertow.io/
2、Undertow实现简单的文件系统
1.导读模块:Undertow 是基于java nio的web服务器,应用比较广泛,内置提供
的PathResourceManager,可以用来直接访问文件系统;如果你有文件需要对外提供访
问,除了ftp,nginx等,undertow 也是一个不错的选择,作为java开发,服务搭建非
常简便2.使用Undertow搭建一个简单的文件系统:1)创建一个maven项目,且引入undertow的依赖<dependency><groupId>io.undertow</groupId><artifactId>undertow-core</artifactId><version>2.0.22.Final</version></dependency>2)在mian函数的App类中,创建服务并启动package com.rj.bd;import java.io.File;import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.handlers.resource.PathResourceManager;/*** @desc 利用Undertow实现简单的文件发布系统* @author HYZ* @time 2021年1月12日*/
public class App {public static void main( String[] args ){//1.构建的文件系统的路径File file = new File("D:/tools/");//2.基于Undertow在本机上创建服务程序,且端口号是8099,Undertow server = Undertow.builder().addHttpListener(8099, "localhost")//设置Http请求手柄.setHandler(Handlers.resource(new PathResourceManager(file.toPath(), 100))//设置显示文件列表 .setDirectoryListingEnabled(true))//创建服务.build();//3.启动服务server.start(); }
}
3、Tomcat与Undertow的区别
导读模块:undertow,jetty和tomcat可以说是javaweb项目当下最火的三款服务器,
tomcat是apache下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。然而:当下微服务兴起,spring boot ,spring cloud 越来越热的情况下,选择一
款轻量级而性能优越的服务器是必要的选择。spring boot 完美集成了tomcat,jetty和
undertow。值得一提的是jetty和undertow都是基于NIO实现的高并发轻量级的服务器,
支持servlet3.1和websocket。tomcat与undertow在功能是基本上一样的,他们的区别主要在于性能上1)Tomcat APR 模式 "最优" , Jetty"最差",Undertow也没有想象中的碾压 Tomcat2)Tomcat NIO 模式 压力刚上来的时候CPU会用满,稳定后基本会留有10%以上的空闲3)Jetty采用的默认配置 , 才2k不到的QPS确实有点出乎意料的,但是体积小,比较灵活4)Undertow提供的配置项很少 , 只有线程数和缓冲大小,加大线程数后也没能显著提升性能PS:QPS:系统吞吐量
这篇关于jetty与Undertow的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!