Jetty

来源:互联网 发布:男生行为心理女生必知 编辑:程序博客网 时间:2024/06/10 04:46

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


Jetty有一个基本数据模型,这个数据库模型就是Handler,所有可以被扩展的组件都可惟作为一个Handler,添加到Server中,Jetty就是帮助管理这些Handler。



整个Jetty的核心组件由Server和Connector两个组件构成,整个Server组件是基于Handler容器工作的,Connector负责接受客户端的连接请求,并将请求分配给一个处理队列去执行。另外还有一些可有可无的组件,我们可以在它上做扩展,如JMX。


整个Jetty的所有组件的生命周期管理是基于观察者模板设计,每个组件都会持有一个观察者集合,当start、fail或stop等事件触发时,这些Listener将会被调用。


Jetty主要提供了两种handler,一种是HandlerWrapper,它可以将一个Handler委托给另一个类去执行,另外一个Handler类型是HandlerCollection,这个Handler类可以将多个Handler组装在一起,构成一个Handler链。


Jetty的启动过程

Jetty的入口是Server类,Server类启动完成了,就代表Jetty能为你提供服务了。因为Jetty中所有的组件都会继承LifeCycle,所以Server的start方法调用就会调用的有已经注册到Server的组件,Server启动其它组件的顺序是:首先启动设置到Server的Handler,通常这个Handler会有很多子Handler,这些Handler将组成一个Handler链,Server会依次启动这个链上所有Handler,接着会启动注册在Server上JMX的MBean,让MBean也一起工作起来,最后会启动Connector,打开端口,接受客户端请求。


接受请求

Jetty可以提供两种协议工作:一个是HTTP,一个是AJP协议。


与Tomcat比较

1.架构比较

Jetty的架构从前面的分析可知,它的所有组件都可以基于Handler来实现,可以说Jetty是面向Handler的架构,就像spring是面向Bean的架构,ibatis是面向statement一样,而Tomcat是以多级容器构建起来的。

2.性能比较

Tomcat在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat的总体性能更高。Jetty可以同时处理大量连接而且可以长时间保持这些连接。



0 0