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的核心代码为高并发开发和优化做出的一些切实的努力。 阅读详情

相关推荐

数理统计四大分布---正态分布、卡方分布、学生t分布和F分布

在统计学上,我们会遇到一些常见的分布,除了正态分布外,,如t检验对应的t分布,检验对应的分布,方差分析对应的F分布等。这些分布是统计学的基础,在假设检验、方差分析等领域都起着至关重要的作用。在此,我们对这四种分布做详细的介绍,并附上MATLAB代码。 四种分布的讲解摘自MATLAB 2016的统计学和机器学习工具箱,有兴趣的可以去查看英文原版。 另外,为了方便,上传文档为图片格式,可能有些模糊...

suncangan的博客 5万+

Jetty的架构(翻译)

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

执着之道 205

告别转换超时!手把手教你用Allegro2Altium.bat搞定AD21导入Allegro 17.2文件

本文详细介绍了如何使用Allegro2Altium.bat工具解决AD21导入Allegro 17.2文件时的转换超时问题。通过理解转换机制、准备离线环境、执行完整转换流程及高级技巧,帮助工程师高效完成PCB设计文件转换,提升工作效率。

weixin_30378623的博客 421

Jetty6的架构

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

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

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

点云图的学习

一。点云地图拼接 1.1 配置运行环境 首先配置安装opencv3,安装完成后如下图: 然后配置点云图工具pcl,直接使用apt即可安装,安装后如下图: 最后使用点云工具观察点云图: 1.2 原理解析 总的来说由多角度拍摄图片拼接为点云3D图,是通过相机的内参,将像素坐标转化为相机坐标,再通过外参将相机坐标转化为世界坐标系,然后将每张图片的像素绘制填充于同一个世界坐标系下面,形成点云3D图。...

ff_xun的博客 1万+

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

电机传动机构的转矩与惯量折算

参考《工业运动控制》

庐州牧 1万+

[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万+

Claude Code启动失败解决方案,执行文件不兼容一键修复

Claude Code命令行工具突然报错,显示"不支持的16位应用程序"。作者排查Node版本无果后,发现是Anthropic更新导致Windows兼容性问题。解决方法很简单:卸载旧版、切换npm镜像源、重装最新版即可恢复。经验教训:遇到类似问题应先搜索社区反馈,避免无谓排查,同时注意npm源使用后及时还原。整个踩坑过程虽折腾,但最终只是简单的重装问题。

1459

零成本实现飞牛 OS 内网穿透:CloudFlare 隧道搭建全攻略

一、引言:突破内网限制的最优解当你的内网环境中部署了飞牛 OS 系统(无论是老旧电脑还是 NAS 设备),想要实现公网访问时,传统方案往往面临两大痛点:公网 IP 申请困难且成本高DDNS 动态解析配置复杂专业内网穿透工具存在付费门槛今天为大家带来零成本解决方案:通过免费域名搭配 CloudFlare 隧道技术,无需公网 IP 即可轻松实现飞牛 OS 服务的公网访问。全程操作可视化,新手也能快速上手!二、前期准备:必备工具清单(1)域名准备。

Honmaple的博客 7493

Jetty

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

金溪的博客 439

验证方法、符合性方法与设计保证的关系

未来,随着适航标准和工程实践的不断演进,验证与符合性方法将持续优化,以应对日益复杂的系统设计需求。设计保证过程中的验证活动具有双重作用,既用于设计过程的质量控制和风险管理,又作为适航符合性方法的重要支持材料。在未来的航空电子系统开发中,进一步优化设计保证与验证活动的协同作用,将有助于应对日益复杂的工程挑战,推动航空安全技术的发展。为了全面理解这二者之间的关系,本章将系统说明设计保证过程中的验证活动如何既服务于设计保证,又作为符合性方法中的核心证明材料。最终,通过功能测试和环境测试验证硬件的实际性能。

qq_41854911的博客 554

jetty浅析

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

qipanliming的专栏 1000

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

jiangshanjianke的专栏 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

韩超的博客 (hanchao5272) 3354

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、付费专栏及课程。

余额充值