jetty 模块化做得比较好,仅通过引入 jetty-server 即可写 servlet 无关服务器。
如果要写 servlet 应用,可以引入 jetty-webapp 包,它会间接引入 jetty 的 servlet 实现 jetty-servlet。
Server → AbstractLifeCycle#start → doStart
Server#doStart → super#doStart
AbstractHandler#doStart → super#doStart
ContainerLifeCycle#doStart
ContainerLifeCycle#start(LifeCycle), 顾名思义 ContainerLifeCycle 负责一些对象的管理工作,它会遍历内部的 _beans 列表,如果其管理的 Bean 是 LifeCycle 类型,调用自身实现的 start(LifeCycle) 方法对其初始化,默认实现为 LifeCycle#start, Server 实现会过滤 Connector, 推迟到最后启动。
Server 管理 bean
QueuedThreadPool 管理 bean, ReservedThreadExecutor
WebAppContext#doStart → ServletContextHandler#doStart → ContextHandler#doStart
ContextHandler 为 Servlet 标准模版实现者,This handler wraps a call to handle by setting the context and servlet path, plus setting the context classloader,他的 doStart 会完成整套环境的装配。
ContextHandler#doStart → (Impl)WebAppContext#startContext