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、Hadoop

ps: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下,然后解压,然后将解压之后的名字更改为jetty20200117

2.验证并运行官网给的示例: 参考图: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也没有想象中的碾压 Tomcat
	2)Tomcat NIO 模式 压力刚上来的时候CPU会用满,稳定后基本会留有10%以上的空闲
	3)Jetty采用的默认配置 , 才2k不到的QPS确实有点出乎意料的,但是体积小,比较灵活
	4)Undertow提供的配置项很少 , 只有线程数和缓冲大小,加大线程数后也没能显著提升性能

PS:QPS:系统吞吐量
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值