Jetty的架构

Jetty架构和实现分析 Jetty架构和实现分析Jetty架构和实现分析 架构分析 实现分析 代码组织方式 jetty-server分析 架构分析Jetty的架构,可以参见Jetty 7 Architecture,里面的内容包括了Jetty总体设计以及各个部分的实现方式。文档虽然有点儿旧,但是Jetty的架构设计基本没有什么大的变化,所以参考价值很高。实现分析代码组织方式eclipse/jetty.project使用Mav 阅读详情

Jetty的架构 - Gui Xun Long - Hello Java

Connector(连接器)集合负责接收HTTP连接。handler(处理器)集合负责处理连接请求并给予响应。而Jetty Server(服务器)则是前两者的管道连接器。负责创建并初始化connector、handler、ThreadPool组件,然后调用start方法启动他们。ThreadPool(线程池)为他们完成工作提供线程。
Jetty Server演示代码

Java代码   收藏代码
  1. //1:定义server  
  2. Server server = new Server();  
  3.   
  4. //2:把连接器集合放到server里  
  5. Connector connector=new SelectChannelConnector();  
  6. connector.setPort(8080);  
  7. server.setConnectors(new Connector[]{connector});  
  8.   
  9. //3:并把处理器集合放到server里  
  10. Handler param=new ParamHandler();  
  11. Handler hello=new HelloHandler();  
  12. HandlerCollection handlers = new HandlerCollection();  
  13. handlers.setHandlers(new Handler[]{param,hello});  
  14. server.setHandler(handlers);  
  15.   
  16. //4:启动server  
  17. server.start();  
  18. server.join();  
 


模式


Jetty的架构 - Gui Xun Long - Hello Java
 
jetty遵循一些比较规范的模式,最抽象的概念通过接口定义,如连接器,处理器和缓冲区。在抽象类中实现这些接口的通用操作,如AbstractConnector, AbstractHandler and AbstractBuffer。

Connectors

 Jetty的架构 - Gui Xun Long - Hello Java

 

连接器表示协议的处理者,负责解析请求并生成响应。不同类型的连接器在其基于的协议下有效,如调度模型和IO API的使用:

?SocketConnector - for few busy connections or when NIO is not available.
?BlockingChannelConnector - for few busy connections when NIO is available
?SelectChannelConnector - for many mostly idle connections or asynchronous handling of Ajax requests.
?SslSocketConnector - 没有使用NIO的SSL连接器。
?SslSelectChannelConnector - 使用非阻塞NIO支持的SSL连接器。
?AJPConnector AJP protocol support for connections from apache mod_jk or mod_proxy_ajp

connectors的使用代码

Java代码   收藏代码
  1. Connector connector=new SelectChannelConnector();  
  2. connector.setPort(8080);  

Handlers

Jetty的架构 - Gui Xun Long - Hello Java
 

Handler组件负责处理接收到的请求. handler核心的API是handle方法:

 

Java代码   收藏代码
  1. public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)  
  2.     throws IOException, ServletException;  
 

这个方法的实现可以处理请求,传递请求到另外一个处理器(或者servlet),或修改并包装请求并传递出去。有三种类型的处理器:

  1. Coordinating Handlers - 负责路由请求到其他处理器的处理器(eg HandlerCollection, ContextHandlerCollection)
  2. Filtering Handlers - 负责增加请求并传递到其他处理器的处理器(eg. HandlerWrapper, ContextHandler, SessionHandler)
  3. Generating Handlers - 负责产生内容的处理器(eg ResourceHandler and ServletHandler)

Handler代码如下

Java代码   收藏代码
  1. Handler handler=new HelloHandler();  
  2. server.setHandler(handler);  
  3.   
  4.  public static class HelloHandler extends AbstractHandler  
  5.     {  
  6.         public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException  
  7.         {  
  8.             Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();  
  9.             base_request.setHandled(true);  
  10.   
  11.             response.setContentType("text/html");  
  12.             response.setStatus(HttpServletResponse.SC_OK);  
  13.             response.getWriter().println("<h1>Hello OneHandler</h1>");  
  14.         }  
  15.     }  
 

Servlets

Context

Contexts是一种处理器,负责组织其他特定URI上下文路径或者一个虚拟机的处理器。通常情况下一个上下文必须有:

  • 一个上下文路径,负责通过上下文定义哪一个请求被处理。 (eg /myapp )
  • 一个基于静态内容的资源(a docroot)
  • 一个类加载器去获得指定上下文中的类(通常在docroot/WEB-INF/classes下)
  • 虚拟机名称

上下文实现包括:

  •  ContextHandler
  • Servlet Context
  •  a Web Application Context

Context示意代码:

Java代码   收藏代码
  1. ContextHandler context = new ContextHandler();  
  2. context.setContextPath("/");  
  3. context.setResourceBase(".");  
  4. context.setClassLoader(Thread.currentThread().getContextClassLoader());  
  5. server.setHandler(context);  
 

Web Applications

Jetty的架构 - Gui Xun Long - Hello Java
 
一个WebAppContext是servlet Context的子类,它提供web应用程序标准的层次结构,以及session, security, listeners, filter, servlets 和JSP的配置。
Java代码   收藏代码
  1. WebAppContext webapp = new WebAppContext();  
  2. webapp.setContextPath("/");  
  3. webapp.setWar(jetty_home+"/webapps/test");  
  4. webapp.setDefaultsDescriptor(jetty_home+"/etc/webdefault.xml");  
  5.   
  6. server.setHandler(webapp);  

Jetty多线程核心分析介绍 显而述之:Server是Jetty的核心元素,大量的工作都是围绕着它展开的,而Server内维护着一组Connector,每个Connector表示一个可用的服务,每个客户端连接都是针对一个Connector发起的。与JDK自带的线程池最大的不同时:QueuedThreadPool没有核心线程数的概念,在不超过最大线程数的前提下,只要没有空闲线程处理新任务,它就会立即开启新的线程。第一篇除了简单的简介之外,我还想从多线程优化的角度切入,去分析一下Jetty的核心代码为高并发开发和优化做出的一些切实的努力。 阅读详情

相关推荐

【Unity游戏开发】SDK接入与集成——小白入门篇

一、简介   通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感,太尼玛无聊了(Android渠道一弄就十几个,直接吐血)。其实通常情况下接入SDK都是很简单的一个过程,本系列博客就让马三和大家从小白开始,从零基础开始学习如何接入SDK以及一些常见的SDK的...

weixin_34195142的博客 5763

Jetty的架构(翻译)

Jetty的架构 Connector(连接器)集合负责接收HTTP连接。handler(处理器)集合负责处理连接请求并给予响应。而Jetty Server(服务器)则是前两者的管道连接器。负责创建并初始化connector、handler、ThreadPool组件,然后调用start方法启动他们。ThreadPool(线程池)为他们完成工作提供线程。Jetty Server演示代码 /...

执着之道 205

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(上)

本文深入解析了AM32电调固件的源码架构与核心模块实现。文章首先介绍了AM32电调作为开源无人机;动力心脏的重要地位,随后从硬件基础、源码目录、模块划分三个维度构建解析框架。重点剖析了系统初始化模块的时钟配置、GPIO初始化和定时器设置,以及FOC控制模块的坐标变换算法、角度估算和SVPWM生成等关键技术实现。通过逐行代码解析,揭示了电调如何将飞控指令转换为电机驱动的完整过程,为开发者理解AM32电调工作原理提供了系统性指导。

bother3000的博客 6563

Jetty6的架构

Connector(连接器)集合负责接收HTTP连接。handler(处理器)集合负责处理连接请求并给予响应。而Jetty Server(服务器)则是前两者的管道连接器。负责创建并初始化connector、handler、ThreadPool组件,然后调用start方法启动他们。

【郭林专刊】云哥中国 I T 民工 673

飞塔防火墙之Link Monitor

Link Monitor类似于SLA,飞塔防火墙线路质量探测的一个功能。

weixin_41903258的博客 2408

一文学会Cadence Sigrity PDN仿真——硬件新手小白都能看懂的保姆级教程

电源完整性的仿真,实际上是在仿真以及优化系统中的等效串联电阻。知道了仿真以及优化的目标之后,接下来就是要弄明白这个串联电阻从哪儿来以及怎么优化。整个系统中的串联电阻实际上由三部分组成:没有相位的阻抗,有相位的容抗和感抗,得益于相位,在某个特定的频点,容抗和感抗会大小相等,相位相反而相互抵消,这时候整个系统中就剩下了阻抗,所以整个系统的串联电阻达到了一个最低值,这种现象就是----谐振。当系统处于谐振点时候,整个系统会有一个最小的串联电阻,所以第一个优化电阻的手段就是让谐振来的更频繁一点。

学习帮的博客 2万+

Jetty的架构代码分析

kafka--- consumer 消费消息目录概 述小结参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people. talk

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 314

表面声波滤波器——叉指换能器设计实战:从关键参数到结构选型

本文深入探讨了表面声波滤波器核心部件叉指换能器的实战设计流程。从目标驱动出发,详细解析了如何根据中心频率确定关键参数指宽,并权衡叉指对数对带宽和插入损耗的影响。文章进一步介绍了通过变迹加权优化频率响应,并对比了梯形结构与纵向耦合谐振滤波器等主流结构选型的适用场景与优缺点,为工程师提供从理论计算到仿真验证的完整设计指南。

weixin_29216353的博客 104

[ERROR] Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.4.14.v20181114:run (default-cl

[ERROR] Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.4.14.v20181114:run (default-cli) on project springExec: Failure: Failed to bind to 0.0.0.0/0.0.0.0:8080: Address already in use: b...

过去过去,未来未来,当下永恒! 1万+

Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟

本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。

cicd6pipeline的博客 671

使用Python进行核磁数据预处理

随着医学与人工智能技术的快速崛起,伴随算法算力、数据等关键要素的积累和突破,人工智能技术在精准医学领域的科研应用也随之飞快增长,相关科研成果和学术论文数量逐年激增,医学影像人工智能涉及的技术如图像分割、病灶识别、病灶自动勾画、影像组学、深度学习模型构建和临床信息解析越来越趋于分析流程化,模块化,帮助越来越多的医生在临床科研实践中获得突破性的进展。根据具体的应用和数据类型,你可能需要调整或添加额外的步骤。对于更高级的处理,如图像分割或NMR数据的复杂处理,你可能需要查阅更专业的文献或使用更专业的软件工具。

xhlo521的博客 3132

Jetty

Jetty是一个开源的、基于标准、全功能实现Java服务器,它在Apache2.0协议下发布。它真正出名的是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。   Jetty有一个基本数据模型,这个数据库模型就是Handler...

金溪的博客 439

飞牛fnNAS虚拟机开启OVS导致失联的解决

摘要:用户在使用飞牛NAS时发现开启OVS网络功能后导致NAS失联。通过多种尝试(包括开关OVS、更换系统版本、手工配置、更换网卡、处理器检查等)后发现,OVS启用状态下DHCP无法获取IP地址,手动设置IP可暂时恢复网络。但重启后问题依旧,初步判断为OVS功能存在bug。目前临时解决方案是在需要时手动开关OVS,或考虑其他虚拟化方案。用户计划后续探索替代方案,并等待官方修复该问题。

dgnankai的专栏 4335

jetty浅析

jettyJetty是一个servlet引擎,主要有2个核心组件: server组件和connector组件。 整个server组件是基于handler容器工作的,类似Tomcat的container容器。 connector组件负责接收客户端的连接请求并将请求分配给一个处理队列去执行。 Jetty所有组件的生命周期管理基于观察者模式。 Jetty启动过程:jetty入口是server类,

qipanliming的专栏 1000

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jetty入门笔记(从部署到原理)

第一章          部署   1.1    在Webapps目录部署 WebAppProvider定时扫描$jetty_home/webapps目录自动部署 注意如果同名则webapp会让步与contexts部署方式。   1.2    在contexts目录部署 ContextProvider定时扫描$jetty_home/contexts目录中的配置文件自动部署

jiangshanjianke的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot2使用Jetty容器(替换默认Tomcat)

Jetty和tomcat的比较 Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的Servlet规范和JavaEE规范。 架构比较 Jetty的架构比Tomcat的更为简单。 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。 性能比较 ...

韩超的博客 (hanchao5272) 3354

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Jetty 和 Tomcat 之争

Jetty是一个开源的HTTP服务器和Servlet引擎,它可以为JSP和Servlet提供运行时环境。Tomcat的前身为Catalina,是一个Servlet容器,支持最新的Servlet和JSP规范。

wr_java的博客 435

Jetty 和 Tomcat 之争,到底孰强孰弱

Jetty是一个开源的HTTP服务器和Servlet引擎,它可以为JSP和Servlet提供运行时环境。Tomcat的前身为Catalina,是一个Servlet容器,支持最新的Servlet和JSP规范。 Jetty 架构 Jetty 的核心组件包括 Server,Handle和Connector,Server是整个Jetty的核心,包含了Handle和Connector。Jett...

编程者说的博客专栏 732

secureCat扫描jetty

jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎。本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构;Jetty 的启动过程;Jetty 如何接受和处理用户的请求。你还将了解到 AJP 的一些细节:Jetty 如何基于 AJP 工作;以及 Jetty 如何集成到 Jboss;最后我们将比较一下两个 Servlet 引擎:Tomcat 和 J...

MoYanHanHuiLengMa的博客 1910

tomcat原理_jetty、jetty原理、jetty与tomcat区别

1、啥是jettyJetty是一个开源的HTTP服务器和Servlet引擎,它可以为JSP和Servlet提供运行时环境。相对于Tomcat,jetty更加轻量、更加简易、更加灵活。2、jetty特点(1)jetty是异步的,支持更高的并发量(2)jetty更灵活,更加轻量,更容易定制,更高的资源利用率(3)Jetty 默认采用的 NIO 模型,jetty能很好支持长链接(4)集成简单,应用只要集...

weixin_39929635的博客 455

jetty与tomcat的区别?jetty与tomcat默认端口号的修改?Windows环境下jetty的安装与启动?

目录1、 jetty与tomcat的区别?相同点:不同点:总结: 1、 jetty与tomcat的区别? 说到服务器,jetty与tomcat应该是挺有名的两款jsp/servlet容器了,大家在用的时候应该会有所疑惑? 到底该选择哪个更好一点呢。这还得按照具体的场景来分析~ 下面就来说一说它俩有啥区别~ 相同点: tomcat与jetty都是一种servlet引擎,他们都支持...

Hi~ 土拨鼠 617

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

Jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎。本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构;Jetty 的启动过程;Jetty 如何接受和处理用户的请求。你还将了解到 AJP 的一些细节:Jetty 如何基于 AJP 工作;以及 Jetty 如何集成到 Jboss;最后我们将比较一下两个 Servlet 引擎:Tomcat 和 J...

weixin_33762321的博客 90

Jetty 中间件

Jetty 的基本架构 Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。 Jetty 的基本架构 下图是 Jetty 的基本架构图,整个 Je...

iteye_2280的博客 651

Jetty 服务器架构分析(上)

Jetty 服务器实现架构分析

黄刚的专栏 1万+

Jetty和tomcat的比较

Jetty和tomcat的比较   相同点: 1.      Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。     不同点: 1.      架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。 Tomcat的架构是

classicbear的专栏 8万+
上一篇: Java Thread 总结
下一篇: java多线程
beyondlpf
博客等级 码龄18年 103粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值