执行剧本参数,执行bootstrap.jar中的Bootstrap类中main要领,并传入参数start
- hift
-
- eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS
-
- -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS""
-
- -classpath ""$CLASSPATH""
-
- -Djava.security.manager
-
- -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""
-
- -Dcatalina.base=""$CATALINA_BASE""
-
- -Dcatalina.home=""$CATALINA_HOME""
-
- -Djava.io.tmpdir=""$CATALINA_TMPDIR""
-
- org.apache.catalina.startup.Bootstrap "$@" start
在上面剧本中我们可以看出最后执行的都是从Bootstrap的main要领作为进口的,以是我们打开Tomcat源码进去Bootstrap类中看它到底做了什么。
启动类说明
作为Tomcat的进口类,我们先看看Bootstrap中做了什么。这里只贴出main要领中重要的代码。
- //初始化类加载器而且将Catalina文件加载进内存中
- bootstrap.init();
- String command = "start";
- if (args.length > 0) {
- command = args[args.length - 1];
- }
- if (command.equals("startd")) {
- args[args.length - 1] = "start";
- //挪用Catalina.java的load要领
- daemon.load(args);
- //挪用Catalina.java的start
- daemon.start();
- } else if (command.equals("stopd")) {
- args[args.length - 1] = "stop";
- //挪用Catalina.java的stop
- daemon.stop();
- } else if (command.equals("start")) {
- daemon.setAwait(true);
- daemon.load(args);
- daemon.start();
- if (null == daemon.getServer()) {
- System.exit(1);
- }
- } else if (command.equals("stop")) {
- daemon.stopServer(args);
- } else if (command.equals("configtest")) {
- daemon.load(args);
- if (null == daemon.getServer()) {
- System.exit(1);
- }
- System.exit(0);
- } else {
- log.warn("Bootstrap: command "" + command + "" does not exist.");
- }
这里是按照剧本中传入的差异呼吁,挪用Catalina差异的要领。因为我们首要说明的Tomcat怎样做到一键式启停的,以是我们首要说明Catalina的start要领。
在Catalina的satrt要领中我们看到了这一句
- getServer().start();
随后颠末Debug都是颠末尾Lifecycle的start要领,我们把Lifecycle的要领列出来
- public interface Lifecycle {
- public void addLifecycleListener(LifecycleListener listener);
- public LifecycleListener[] findLifecycleListeners();
- public void removeLifecycleListener(LifecycleListener listener);
- public void init() throws LifecycleException;
- public void start() throws LifecycleException;
- public void stop() throws LifecycleException;
- public void destroy() throws LifecycleException;
- public LifecycleState getState();
- public String getStateName();
- public interface SingleUse {
- }
- }
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|