1.什么是jetty?
开源HTTP服务器和Servlet引擎,是web应用的容器,同tomcat类似。由于其轻量灵活的特性,很多知名产品也应用了它,如maven、eclipse、hadoop、spark、activeMQ
2.为什么使用jetty?
- 异步的Servlet,支持更高的并发量(异步Servlet是Servlet3.0原生的东西,只是jett中的Continuation使它更高效)
- 模块化设计,更灵活易定制,也意味着更高的资源利用率(如久其现在使用的各个jar,模块化然后集中管理)
- 在面对大量长连接的业务场景下,jetty默认采用的NIO(非阻塞)模型是更好的选择
- 将jetty嵌入到应用中,能够使一个普通应用快速支持http服务(不再将应用放进web容器中,而是将jetty嵌入到应用中)
3.jetty的基本架构?
核心组件是Server和Handler,jetty中的所有组件都是基于Handler来实现的,包括Server。
4.与tomcat对比?
- jetty更容易集成第三方框架,比如可以直接用Spring配置一个Jetty服务器
- 直接将jetty作为提供http服务的组件嵌入到应用中
- jetty是面向handler的架构,而tomcat是面向容器的
- jetty默认使用NIO,tomcat使用BIO
- jetty高度模块化,可以很灵活管理拓展去除组件,tomcat则很难管理其它组件
5.使用jetty?
版本选择:9.2版本必须使用java7+,9.3必须java8+
项目结构:
- bin:可执行脚本文件(启动脚本)
- etc: Jetty 的配置目录 & 模块相关的配置
- modules:模块目录,存放 xxx.mod 配置文件
- resources:classpath 下的附加资源配置目录,如 log4j.properties
- webapps:应用部署位置,可以是 web 应用目录,也可以是 war 文件
- lib:Jetty 所依赖的 jar 文件,以及模块所依赖的 jar
- logs:日志目录
- demo-base:Jetty 默认的演示程序
- start.ini:Jetty 默认的配置文件
- start.jar:运行 Jetty 的 jar
启动jetty服务器:
- 在当前目录下执行java -jar start.jar,启动的就是当前根目录webapps下的程序
常用配置
- start.ini:服务启动配置项
- etc/xxx.xml:Jetty 服务相关配置
- modules/xxx.mod:模块相关配置
6.Jetty模块化
- 单体应用架构:更新任意应用服务需要重启整个应用
- 微服务架构:将需求模块拆分服务,单个服务更新不影响其它服务
7.web应用部署方式:
- 将war包直接放到根目录下的的webapps中,可解压成ROOT目录,便可不需要添加上下文路径即可访问
- 将war包放到demo-base目录下的webapps中
原文地址:https://www.cnblogs.com/mabaoqing/p/10346521.html
时间: 2024-10-15 05:24:45