Main类是jetty的启动类,是项目启动的入口,

main方法通过解析传入的参数,来决定加载哪些组件的配置文件,默认根据jetty根目录下面的start.ini来决定加载。

Main的start方法,会启动监控线程Monitor,在绝大情况下都不会使用,它会在接受到stop命令后,销毁Main创建的子进程。

由Config加载start.conf,确定各个子模块所对应需要加载的jar包,及Main需要委托调用的主类,默认是XmlConfiguration类。

在加载XmlConfiguration类定义时,切换了类加载器。

XmlConfiguration实现了ioc功能,根据Main方法选定的配置文件,装配实例。

如:

<Configure id="Server" class="org.eclipse.jetty.server.Server"><!-- =========================================================== --><!-- Server Thread Pool                                          --><!-- =========================================================== --><Set name="ThreadPool"><!-- Default queued blocking threadpool --><New class="org.eclipse.jetty.util.thread.QueuedThreadPool"><Set name="minThreads">10</Set><Set name="maxThreads">200</Set><Set name="detailedDump">false</Set></New></Set><!-- =========================================================== --><!-- Set connectors                                              --><!-- =========================================================== --><Call name="addConnector"><Arg><New class="org.eclipse.jetty.server.nio.SelectChannelConnector"><Set name="host"><Property name="jetty.host" /></Set><Set name="port"><Property name="jetty.port" default="8080"/></Set><Set name="maxIdleTime">300000</Set><Set name="Acceptors">2</Set><Set name="statsOn">false</Set><Set name="confidentialPort">8443</Set><Set name="lowResourcesConnections">20000</Set><Set name="lowResourcesMaxIdleTime">5000</Set></New></Arg></Call><!-- =========================================================== --><!-- Set handler Collection Structure                            --> <!-- =========================================================== --><Set name="handler"><New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"><Set name="handlers"><Array type="org.eclipse.jetty.server.Handler"><Item><New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/></Item><Item><New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/></Item></Array></Set></New></Set><!-- =========================================================== --><!-- extra options                                               --><!-- =========================================================== --><Set name="stopAtShutdown">true</Set><Set name="sendServerVersion">true</Set><Set name="sendDateHeader">true</Set><Set name="gracefulShutdown">1000</Set><Set name="dumpAfterStart">false</Set><Set name="dumpBeforeStop">false</Set></Configure>

装配好实例之后,如果实例实现了LifeCycle接口,调用start方法完成初始工作。

转载于:https://www.cnblogs.com/knockon/p/3367292.html

jetty启动源码分析相关推荐

  1. Jetty - Container源码分析

    1. 描述 Container提供管理bean的能力. 基于Jetty-9.4.8.v20171121. 1.1 API public interface Container {// 增加一个bean ...

  2. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )

    文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...

  3. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )

    文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...

  4. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 一 )

    文章目录 前言 一.ClientTransactionHandler.scheduleTransaction 二.ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 ...

  5. 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )

    文章目录 前言 一.热启动与冷启动选择 二.AMS 进程中执行的相关操作 三.通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 [Android 启动过 ...

  6. 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 )

    文章目录 一.Activity 启动源码分析 ( AMS | ActivityManagerService ) 1.Instrumentation 调用 AMS 方法 2.ActivityStarte ...

  7. 【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )

    文章目录 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 调用 star ...

  8. Eureka Server启动源码分析

    本文来分析下Eureka Server启动源码 文章目录 概述 源码解析 服务同步 服务剔除 start包配置 启动源码分析 EurekaServerAutoConfiguration EurekaS ...

  9. Android 9(P)之init进程启动源码分析指南之一

         Android 9 之init进程启动源码分析指南之一 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...

最新文章

  1. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
  2. dubbo 即是服务提供者又是消费者_Dubbo详细介绍与安装使用过程
  3. linux解压tar到目录,在Linux系统中将tar文件解压到不同的目录中的教程
  4. yum 下载全量依赖 rpm 包及离线安装(终极解决方案)
  5. js判断wifi_使用JS在浏览器中判断当前网络连接状态的几种方法
  6. 回首经典的SQL Server 2005
  7. apache+tomcat的架构
  8. python网络爬虫系列(十)——chrome在爬虫中的使用
  9. (转)Hadoop入门进阶课程
  10. 笔记本电脑电池怎么拆_笔记本电脑光驱位置加装机械硬盘,应该知道的事
  11. 军营中重重打击之后,我变了一个人(中)--我成为程序员所经历的(四)
  12. HTML怎么让左边占满整个竖屏,关于移动端页面强制竖屏
  13. exynos4412,tegra3,msm8960性能对比,参考对照exynos4210
  14. python分析报告怎么写_【总结】竞品分析报告撰写的方法
  15. 分享几个小程序开发的小案例
  16. 大型web系统数据缓存设计
  17. radmi4a Android,红米手机4A获取root超级权限的教程
  18. 一个数据分析的真实失败案例,让我突然有点恍惚了
  19. matlab 向量_Matlab:向量点积和叉积及求模
  20. Crowded Cows(洛谷P3088)

热门文章

  1. JS破解专题|光汇云油登录算法
  2. Vue学习(常用实例、脚手架搭建)-学习笔记
  3. 平面上有两个圆相交,求两个圆相交部分的面积
  4. ReactNative-WebView组件
  5. Kafka的优化建议
  6. JS中的prototype、__proto__与constructor(图解)
  7. Django笔记---数据库设计
  8. ubuntu 下 安装 sublime Text3
  9. jquery 回车事件
  10. 子网划分 超网、路由汇总计算