Tomcat启动过程都干了啥
推荐于2016-12-01 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
在了解Tomcat启动过程之前,最好还是上网查查Tomcat有哪些顶层的接口,也就是Tomcat的设计架构,不然晕着头就去调试代码,是看不出什么来的。
通过网上的了解,知道了Tomcat主要的接口有:
·Server、Service、Container、Connector、Lifecycle、Executor、Engine
、Host、Context、Wrapper、Value以及他们之间的关系。
其他的:
Realm、MBean等等。
紧接着大致的浏览了一下这些顶级接口,以及他们之间的关系,画了一张类图,如下:
public static void main(String args[]) {
02.
03.if (daemon == null) {
04.
05.daemon = new Bootstrap();
06.
07.try {
08.
09.// 初始化守护进程,其实就是初始化类加载器
10.
11.daemon.init();
12.
13.} catch (Throwable t) {
14.
15.t.printStackTrace();
16.
17.return;
18.
19.}
20.
21.}
22.
23.
24.
25.try {
26.
27.String command = "start";
28.
29.if (args.length > 0) {
30.
31.command = args[args.length - 1];
32.
33.}
34.
35.
36.
37.if (command.equals("startd")) {
38.
39.args[args.length - 1] = "start";
40.
41.daemon.load(args);
42.
43.daemon.start();
44.
45.} else if (command.equals("stopd")) {
46.
47.args[args.length - 1] = "stop";
48.
49.daemon.stop();
50.
51.} else if (command.equals("start")) {
52.
53.daemon.setAwait(true);
54.
55.// 加载相关配置文件,初始化几个主要的顶层接口实例
56.
57.daemon.load(args);
58.
59.// 启动那些有生命周期的顶层实例,监听用户请求
60.
61.daemon.start();
62.
63.} else if (command.equals("stop")) {
64.
65.daemon.stopServer(args);
66.
67.} else {
68.
69.log.warn("Bootstrap: command \"" + command + "\" does not exist.");
70.
71.}
72.
73.} catch (Throwable t) {
74.
75.t.printStackTrace();
76.
77.}
78.
79.
80.
81.}
从这个方法看,Tomcat启动过程可以简化为3个步骤:
1)初始化守护进程,其实就是初始化类加载器
2)加载相关配置文件,初始化几个主要的顶层接口实例,简单了说,就是服务器初始化。
3)启动那些有生命周期的顶层实例,监听用户请求,简单了说,就是启动服务器。
1)初始化守护进程,其实就是初始化类加载器
2)加载相关配置文件,初始化几个主要的顶层接口实例,简单了说,就是服务器初始化。
3)启动那些有生命周期的顶层实例,监听用户请求,简单了说,就是启动服务器。