Jetty6源码分析-Server初始化并启动

作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!

Jetty 采用纯Java编写,小巧,容易扩展。提供了Http Server,Http Client和Servlet容器的功能,所有这些都开放源代码并且可以免费地发布和用于商业。

Jetty 已经应用于各种各样的项目和产品中,可以嵌入到设备,工具,框架,应用服务器和集群中。如:Yahoo Hapoop Cluster,Google AppEngine,Apache Geronimo,JBoss,Google GWT,Eclipse。

Jetty版本 | Jetty Version

  • Jetty6.1.22

Jetty Server初始化并启动 | Jetty Server Initialization and Start

1、类 org.mortbay.jetty.Server 的继承结构图如下:
图1

类 org.mortbay.jetty.Server 实现了四个接口:

  • org.mortbay.component.LifeCycle
  • org.mortbay.jetty.Handler
  • org.mortbay.jetty.HandlerContainer
  • org.mortbay.util.Attributes

其中接口org.mortbay.component.LifeCycle定义了一个类的生命周期,提供启动,关闭,判断处于哪个生命阶段的功能,是Server,Connector,Handler,HandlerContainer,Attributes等所有需要启动,关闭的接口或类的根。

2、Server初始化时,会同时初始化它所有需要的类。时序图如下:
图2

3、Server启动时做了以下工作:

  1. 初始化并启动UserRealm(用于Jetty安全管理)。
  2. 初始化并启动SessionIdManager(HttpSession管理器)。
  3. 初始化并启动ThreadPool(线程池)。
  4. 初始化并启动Handler(处理来自浏览器的请求)。
  5. 初始化并启动Connector(连接器,用于监听并接收来自浏览器的请求)。