jetty与Undertow

博客主要介绍了Jetty和Undertow的相关知识。包括Jetty的基本概念、好处,如何用Jetty发布运行和部署web项目、修改端口号,还对比了Jetty与Tomcat的区别。同时介绍了Undertow的基本概念、实现简单文件系统的方法,以及Tomcat与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:系统吞吐量
概要介绍:本门课程属于“Java分布式中间件大汇聚实战”系列课程,主要介绍了企业级项目中真实的应用场景的实现及主流的Java核心技术栈(Redis、RabbitMQ、Spring AOP、Redisson、ZooKeeper…)的实战等等。除此之外,还介绍了如何基于Redis设计并实战一款点赞系统(点赞、取消点赞、排行榜、用户中心、文章点赞用户列表…)可以说技术干货甚多,不仅可以巩固企业级应用系统的开发实战能力,相信在面试、跳槽涨薪方面也能带来相应的帮助!课程内容:传说中的金三银四、面试跳槽涨薪季已经来临,Debug特地为大家准备了一系列跟面试、跳槽、巩固核心技术栈相关的课程,本门课程属于第一季,其中的内容包括企业级项目中真实的应用场景实战、面试相关的技术点分享、主流的Java技术栈(Undertow、Redis、RabbitMQ、Spring AOP、Redisson、ZooKeeper…)实战等等。除此之外,我们还基于Redis设计并实战了一款点赞系统,可以说技术干货甚多。在课程的最后,Debug给大家整理了一份最新的面向BAT大厂招聘 ~ 2020年程序猿最新的Java面试题(附带目录和答案),希望对各位小伙伴的成长有所帮助!值得一提的是,本季课程实战的应用场景包括“日志记录”、“邮件发送”、“通告消息通知”、“短信验证码失效验证”、“会员到期自动提醒/到期前N天自动提醒”以及“点赞系统”的设计实战,其大纲如下所示:其中,涉及到的技术栈包括Spring Boot2.0、Mybatis、Undertow、Redis、RabbitMQ、Redisson、Spring AOP、 Java8…下面罗列出本门课程重点介绍的价格应用案例以及业务场景的实现流程图!(1)基于Spring的消息驱动模型实现日志的异步记录:(2)基于消息中间件RabbitMQ的消息队列实现日志的异步记录:(3)基于缓存中间件Redis的订阅发布机制实现商户公告消息通知:(4)基于Redis的Key失效定时任务实现实现短信验证码的过期失效验证:其他核心、典型的应用案例和业务场景的实战可以详细参考“课程目录”!除此之外,我们还基于缓存中间件Redis设计并实战实现了点赞系统中的点赞功能模块,下面罗列出其中涉及到的相关功能模块的实战流程图:其课程收益如下所示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值