Jetty目前是一个比较被看好的Servlet引擎,他的架构比较简单,也是一个可扩展性强且非常灵活的引用服务器。他有一个基本的数据模型,这个数据模型就是Handler,所有可以被扩展的组件都可以作为一个Handler添加到Server中,Jetty将帮你管理这些Handler。
下图是Jetty的基本架构图,整个Jetty的核心由Server和Connector两个组件构成,整个Server组件是基于Handler容器工作的,他类似于Tomcat的Container容器。在Jetty中另外一个必不可少的组件是Connector,他负责接受客户端的连接请求,并将请求分配给一个处理队列去执行。
在Jetty中还有一些可有可无的组件,可以在他上面做扩展。如JMX,我们可以定义一些Mbean把他加到Server中,当Server启动时,这些Bean就会一起工作。
整个Jetty的核心围绕着Server类构建,Server类继承了Handler,关联了Connector和Container,Container是管理Mbean的容器。Jetty的Server的扩展主要是实现了一个个Handler并将Handler加到Server中,在Server中提供了调用这些Handler的访问规则。
整个Jetty的所有组件的生命周期管理是基于观察者模板设计的,他和Tomcat的管理是类似的。每个组件都会持有一个观察者(在这里是Listener类,这个类通常对应观察者模式中常用的Observer角色)集合,当start、fail或stop等事件被触发时,这些Listener将会被调用,这是最简单的一种设计方式,相比Tomcat的LifeCycle要简单得多。