轻量级web容器的设计

点赞:5025 浏览:18957 近期更新时间:2024-01-24 作者:网友分享原创网站原创

摘 要:容器的大小和复杂度,都会影响对用户请求的响应速度,因此对云计算来说,Web容器要满足其需求,势必要特殊写作,才能使容器完全适合云计算的需求.以往的Web容器早在云计算之前就已经存在和发展,在设计之初并没有考虑云计算的问题.本论文主要阐述轻量级Web容器的设计要点.

关 键 词:轻量级web容器设计ConnectorHandlerServerThreadPool

1.系统架构设计

轻量级web容器的整体架构主要包含Connector、Server、Handler和ThreadPool.其中Connector连接器负责连接客户端发起的HTTPconnections;Handler处理器接受处理来自HTTPconnections的请求,并对其进行内容响应;ThreadPool线程池管理和调度多个线程,用来怎么写作与HTTPconnections和Handler的运行.Connector、Handler、ThreadPool分别对应3个非常简单的接口,并各自拥有多个不同的实现类.在不同应用场合下,可以使用选择不同Connector实现类以满足需求.可以指定不同ThreadPool实现类,甚至可以自己实现一个线程池.可以组合多个不同用途的Handler实现来灵活配置怎么写作器的功能.

2.Connector连接器设计

Connector基本分为两大类别NIO类和BIO类.当Connector接收到一个请求(一般是来自Socket)后,产生一个新的HTTPConnection对象,然后由Server对象调用Handler来处理HTTPConnection对象.HTTPConnection类就是解析HTTP协议的地方,并提供附属的Request对象和Response对象,Handler就是通过这两个对象处理输入和输出的.

Connector和Connection是紧密相关的,如果一个Connector要识别特定的协议,那么就必须对应一个Connection实现.自Connector接收到一个请求的时刻起,Connector就需要从ThreadPool提取一个线程来处理这个连接,这样才能实现怎么写作器同时处理多个请求.

3.Handler处理器设计

Handler在Web容器里面对应着一个接口,这个核心接口方法为是:

publicvoidhandle(Stringtarget,HttpServletRequestrequest,

HttpServletResponseresponse,intdispatch)

throwsIOException,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缓存框架的基本原理.

轻量级web容器的设计参考属性评定
有关论文范文主题研究: 关于参考文献的论文范文资料 大学生适用: 专科毕业论文、自考论文
相关参考文献下载数量: 33 写作解决问题: 如何写
毕业论文开题报告: 论文提纲、论文目录 职称论文适用: 论文发表、高级职称
所属大学生专业类别: 如何写 论文题目推荐度: 免费选题

4.Server和ThreadPool线程池设计

要让Web容器工作起来,首先初始化一个Server对象实例,然后给它注册一个或多个Connector对象实例、注册一个ThreadPool对象、注册多个Handler对象并让这些Handler组合起来.这样一个Web容器怎么写作器便组装完成.


Web容器的一个处理请求的过程如下:首先Connector收到一个请求,Connector根据HTTP/1.1协议将请求包装成为Handler所认识的Request和Response对象,然后用Server提供的ThreadPool对象来分配一个线程去执行Handler调用,注意Server对象算是一个Handler对象,所以从Server开始去交给其他Handler对象处理.

关于ThreadPool,Web容器提供两个实现版本:ThreadPool和QueuedThreadPool,当J2SE是1.5以上版本可以选择ThreadPool的实现.ThreadPool存在的目的是因为线程的创建是非常昂贵的操作,所以使用Pool技术以便重复使用以创建的线程.ThreadPool的大致工作方式是:如果存在一个空闲线程,则让它去执行请求处理.如果不存在且没有达到设定的最大线程数,那么就新建一个Thread去执行请求处理.如果已经达到最大线程数,那么就将工作任务放到队列里面排队,等到有空闲线程时再执行任务.