Main函数主要分三步走,一是解析start.int(默认为jetty的安装路径)并将解析后的参数将其放入一个list里,二是来处理放到list中的参数,来设置相应的标志位或调用相应的服务。最后是调用start(List)方法。
start方法的主要逻辑有
(1) start一个监控流程,此线程监听本地的命令,如果是stop,则调用System.exit(0)退出进程,如果是status则告诉你现在jetty是OK的,当然这只是在一切正常的情况下,出错了会在标准错误输出中打印出错误信息。
(2) 把list中的参数封装进org.eclipse.jetty.Config中
(3) 根据_secure字段决定是否设置安全模式
(4) 根据_config中已配置的当前活动类路径,设置系统属性classpath,并得到加载此路径类下的class文件的classloader。
(5) 开启命令行来执行执行jetty,值得主要命令行缓冲区大小有限,必须开启3个线程及时除了输入、输出、错误输出。
(6) 设置当前线程上下文类加载器为(4)得到的类加载器。
(7) 通过反射,执行jetty的HttpServer的主方法。
这基本就是jetty启动前的准备工作,看得不是很仔细,有错误请提出。
以后的文章会剖析jetty的几大模块,以及分析web服务器的构建。