tomcat启动main函数(三)

有了上面的准备工作,我们开始源代码调试。

main函数说明

开打Bootstrap.java,找到main函数,函数源代码如下:

public static void main(String args[]) {



    try {

        // Attempt to load JMX class

        new ObjectName("test:foo=bar");

    } catch (Throwable t) {

        System.out.println(JMX_ERROR_MESSAGE);

        try {

            // Give users some time to read the message before exiting

            Thread.sleep(5000);

        } catch (Exception ex) {

        }

        return;

    }



    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[0] = "start";

            daemon.load(args);

            daemon.start();

        } else if (command.equals("stopd")) {

            args[0] = "stop";

            daemon.stop();

        } else if (command.equals("start")) {

            daemon.setAwait(true);

            daemon.load(args);

            daemon.start();

        } else if (command.equals("stop")) {

            daemon.stopServer(args);

        }

    } catch (Throwable t) {

        t.printStackTrace();

    }

}

上面的代码一共分成三部分: 第一部分:

try {

    // Attempt to load JMX class

    new ObjectName("test:foo=bar");

} catch (Throwable t) {

    System.out.println(JMX_ERROR_MESSAGE);

    try {

        // Give users some time to read the message before exiting

        Thread.sleep(5000);

    } catch (Exception ex) {

    }

    return;

}

验证jdk基础类是否载入,没有载入,在标准输入打印错误信息,然后退出程序运行。

 

第二部分:

if (daemon == null) {

    daemon = new Bootstrap();

    try {

        daemon.init();

    } catch (Throwable t) {

        t.printStackTrace();

        return;

    }

}

初始化运行环境,载入需要的jar包,读取conf/server.xml,生成相应的运行对象:

 

第三部分:

try {

    String command = "start";

    if (args.length > 0) {

        command = args[args.length - 1];

    }



    if (command.equals("startd")) {

        args[0] = "start";

        daemon.load(args);

        daemon.start();

    } else if (command.equals("stopd")) {

        args[0] = "stop";

        daemon.stop();

    } else if (command.equals("start")) {

        daemon.setAwait(true);

        daemon.load(args);

        daemon.start();

    } else if (command.equals("stop")) {

        daemon.stopServer(args);

    }

} catch (Throwable t) {

    t.printStackTrace();

}

装载,开始运行。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值