您的位置:首页 > 运维架构 > Tomcat

tomcat源码阅读(一) 入口

2015-11-10 18:17 656 查看
程序启动入口: org.apache.catalina.startup.Bootstrap的main方法,其最终会调用到org.apache.catalina.startup.Catalina的load()和start()方法。

Bootstrap中的关键代码:

public static void main(String args[]) {

if (daemon == null) {
daemon = new Bootstrap();
try {
daemon.init();
} catch (Throwable t) {
t.printStackTrace();
return;
}
}

try {
String command = "start";
if (args.length > 0) {
command = args[args.length - 1];
}

if (command.equals("startd")) {
args[args.length - 1] = "start";
daemon.load(args);
daemon.start();
} else if (command.equals("stopd")) {
args[args.length - 1] = "stop";
daemon.stop();
} else if (command.equals("start")) {
daemon.setAwait(true);
daemon.load(args);
daemon.start();
} else if (command.equals("stop")) {
daemon.stopServer(args);
} else {
log.warn("Bootstrap: command \"" + command + "\" does not exist.");
}
} catch (Throwable t) {
t.printStackTrace();
}

}
Catalina中load()方法的关键代码:

// Create and execute our Digester
Digester digester = createStartDigester();

 try {
inputSource.setByteStream(inputStream);
digester.push(this);
digester.parse(inputSource);
inputStream.close();
} catch (Exception e) {
log.warn("Catalina.start using "
+ getConfigFile() + ": " , e);
return;
}


一个是创建createStartDigester(),另外一个是对digester的解析。只要把这几个调用搞懂了,tomcat的结构基本上就出来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: