轻量级web容器的设计

来源 :科学与财富 | 被引量 : 0次 | 上传用户:xiaofeixiaheiwa
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:容器的大小和复杂度,都会影响对用户请求的响应速度,因此对云计算来说,Web容器要满足其需求,势必要特殊定制,才能使容器完全适合云计算的需求。以往的Web容器早在云计算之前就已经存在和发展,在设计之初并没有考虑云计算的问题。本论文主要阐述轻量级Web容器的设计要点。
  关键词:轻量级web容器 设计 Connector Handler Server Thread Pool
  1、系统架构设计
  轻量级web容器的整体架构主要包含Connector、Server、Handler和Thread Pool。其中Connector连接器负责连接客户端发起的HTTP connections;Handler处理器接受处理来自HTTP connections的请求,并对其进行内容响应;Thread Pool线程池管理和调度多个线程,用来服务与HTTP connections和Handler的运行。Connector、Handler、Thread Pool分别对应3个非常简单的接口,并各自拥有多个不同的实现类。在不同应用场合下,可以使用选择不同Connector实现类以满足需求。可以指定不同Thread Pool实现类,甚至可以自己实现一个线程池。可以组合多个不同用途的Handler实现来灵活配置服务器的功能。
  2、 Connector连接器设计
  Connector基本分为两大类别NIO类和BIO类。当Connector接收到一个请求(一般是来自Socket)后,产生一个新的HTTP Connection对象,然后由Server对象调用Handler来处理HTTP Connection对象。HTTP Connection类就是解析HTTP协议的地方,并提供附属的Request对象和Response对象,Handler就是通过这两个对象处理输入和输出的。
  Connector和Connection是紧密相关的,如果一个Connector要识别特定的协议,那么就必须对应一个Connection实现。自Connector接收到一个请求的时刻起,Connector就需要从Thread Pool提取一个线程来处理这个连接,这样才能实现服务器同时处理多个请求。
  3、Handler处理器设计
  Handler在Web容器里面对应着一个接口,这个核心接口方法为是:
  public void handle(String target, HttpServletRequest request,
  HttpServletResponse response, int dispatch)
  throws IOException, ServletException;
  参数target是指客户端请求的地址。request和response的类型分别是来自Servlet规范里面的HttpServletRequest和HttpServletResponse接口,HttpConnection引用的Request和Response类分别就是这两个接口的实现。Handle方法的参数列表和Servlet的service方法非常相似。
  Handler分为三类:内容输出Handler,根据target输出内容(如:ResourceHandler、ServletHandler、DefaultHandler等),这些类都是直接对Handler接口进行实现;装饰模式Handler,可以选择在交给另外一个Handler对象调用前或后来处理Request和Response,这些类都继承自 HandlerWrapper类,Server类也是一个装饰模式Handler,其实在Server代理了所有其他的 Handler,是所有Handler的入口,HandlerWrapper中的setHandler方法便是用来设定被代理Handler对象的,另外装饰器模式还运行将多个Handler串联起来使用;集合类Handler,将请求分发给其他Handler处理,分发策略由各自实现类决定,常用集合类Handler有HandlerCollection、HandlerList和ContextHandlerCollection。
  Handler的设计通常与对象缓存技术有关,OSCACHE和JCS是两个应用较为广泛的缓存框架,轻量级Web容器的Handler实现利用了JCS缓存框架的基本原理。
  4、Server和Thread Pool线程池设计
  要让Web容器工作起来,首先初始化一个Server对象实例,然后给它注册一个或多个Connector对象实例、注册一个Thread Pool对象、注册多个Handler对象并让这些Handler组合起来。这样一个Web容器服务器便组装完成。
  Web容器的一个处理请求的过程如下:首先Connector收到一个请求,Connector根据HTTP/1.1协议将请求包装成为Handler所认识的Request和Response对象,然后用Server提供的Thread Pool对象来分配一个线程去执行Handler调用,注意Server对象算是一个Handler对象,所以从Server开始去交给其他Handler对象处理。
  关于Thread Pool,Web容器提供两个实现版本:Thread Pool和QueuedThreadPool,当J2SE是1.5以上版本可以选择Thread Pool的实现。Thread Pool存在的目的是因为线程的创建是非常昂贵的操作,所以使用Pool技术以便重复使用以创建的线程。Thread Pool的大致工作方式是:如果存在一个空闲线程,则让它去执行请求处理。如果不存在且没有达到设定的最大线程数,那么就新建一个 Thread去执行请求处理。如果已经达到最大线程数,那么就将工作任务放到队列里面排队,等到有空闲线程时再执行任务。
  参考文献
  [1]施伟;张忠能;;轻量级容器的设计与应用[J];计算机工程;2006年20期
其他文献
摘 要:气象灾害对农业生产造成的灾害不可低估。不同种类的气象灾害对农业生产所造成的损害也不同,但损失却是都会有的。气象灾害的发生不可避免。但我们可以了解其特点加以防御,尽量减少其给农业生产造成的损失。本文就不同种类的气象灾害的特点及其对农业生产的影响及防御展开了刍议。  关键词:气象灾害;农业生产;影响;防御  气象要素如光、温、水、风等,是农作物生产过程中必然遇到的天气因子,不同的农作物对不同气
通过实施锅炉省煤器技术改造,增加省煤器的换热面积,达到了降低锅炉排烟温度,使锅炉带大负荷的能力得到提升。从而提高了锅炉运行效率,降低了锅炉运行成本,使锅炉安全经济性得到提
摘要:在云计算里,服务器的体积因素是非常重要的。轻量级Web服务器的开发和设计能够满足云计算服务器体积较小且足够灵活的要求。本文对系统实现所用到的技术做了详细的研究与说明。  关键词:Web容器 多线程 技术  轻量级Web服务器的开发和设计涉及到Java以及网络的相关技术,其中主要包含Java语言,HTTP协议,Servlet规范方面的相关技术。能否很好的理解使用这些相关的技术,直接影响到该系统
钢筋工程是基础与主体结构安全的主要分项工程,起着抗拉、抗剪等抗应力应变的作用。同时它又属于隐蔽工程,并具有工作量大、施工面广的特点。因此其质量重要而又难以控制。文中
本研究在调查问卷的基础上,对2014年山东省高考素质教育改革做了调查并运用简单定量分析法进行分析,发现2014年山东省的高考改革政策还存在不足。山东省2014年高考政策并不能有
摘 要:知识经济时代,人力资源是当今社会发展的第一资源,人力资源的开发与管理已成为决定企业发展首要因素。然而,我国企业现行的人事管理与现代人力资源管理在指导思想和管理形式上都存在显著的差别,存在着许多的弊端,制约甚至阻碍了我国企业的发展。因此,如何更好的把人力资源开发、管理好,便成为当今企业发展需要迫切解决的问题。  关键词:知识经济;人力资源;开发与管理  一、我国企业人力资源开发与管理的现状