Servlet容器Tomcat、Jetty、Undertow介绍与对比

概述

前置文章Servlet基础知识

Servlet容器

Tomcat

Jetty

Jetty的定位:Servlet容器和HTTP服务器(Servlet Engine and HTTP Server)。eclipse下项目。
Jetty目录结构,基本上可以和tomcat一一对应:

  • bin:可执行脚本文件
  • demo-base:
  • etc:XML配置文件的目录
  • lib:依赖库文件
  • logs:日志
  • modules:模块
  • resources:外部资源配置文件的目录
  • webapps: war包目录,start.ini定义Jetty的活动模块。

start.ini配置

# webapps是默认的Web项目的部署目录,可修改
jetty.deploy.monitoredDir=webapps

Jetty的模块化架构
Jetty支持的模块:HTTP、HTTPS、SSL、logging、JMX、JNDI、WebSocket。常用模块如HTTP、JSP和WebSocket都是默认激活的,其他模块则需要手动激活。模块是扩展名为.mod的文件,它声明要被激活的JAR文件和XML配置文件,以及其他要作为模块被激活的资源。模块的两种激活方式:

  1. java -jar start.jar --add-to-startd=logging执行后在Jetty目录下创建logging.ini
  2. start.ini激活模块:--module=logging,更常用

两种协议工作方式:

  1. 基于HTTP
  2. 基于AJP
    用于Jetty 集成Jboss、 Apache。

Jetty的所有组件都基于Handler实现,支持 JMX。Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样。Handler采用责任链模式,接口HandlerCollection用于构建一个链,接口ScopeHandler用于控制这个链的访问顺序。

undertow

Spring Boot支持tomcat、jetty、undertow三种容器。
官网:http://undertow.io/
不仅仅是一个Servlet容器,还支持Web Socket,HTTP2,HTTP升级(HTTP Upgrade)。

对比

同:
都支持标准的Servlet、JavaEE规范。

异:
Tomcat诞生早,使用更广泛,对规范的支持更全面。Tomcat 在处理少数非常繁忙的连接上更有优势,适用于短生命周期连接。架构复杂,Tomcat 的核心是其容器的设计,从 Server 到 Service 再到 Engine 等 Container 容器,Tomcat 是以多级容器构建起来的。大多数企业级应用首选。

Jetty轻量级,易扩展,组件按需加载&可插拔,对最新Servlet规范支持响应快。组件按需加载时,服务器本身内存开销小。Jetty 可以同时处理大量连接而且可以长时间保持这些连接,适用场景:web 聊天应用。默认使用的是 NIO 技术。处理静态资源时,性能好。

性能对比

benchmark对比,

给出数据,
todo

参考

Jetty 的工作原理以及与 Tomcat 的比较

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值