tomcat启动的入口---Bootstrap,源码分析

本文深入探讨Tomcat启动的核心——Bootstrap类,详细分析`bootstrap.init()`、`daemon.setAwait(true)`、`daemon.load(args)`和`daemon.start()`四个关键步骤,揭示Tomcat启动过程中的类加载器初始化、线程上下文类加载器设置及服务器实例的创建等核心机制。
摘要由CSDN通过智能技术生成

上一篇说到,我们启动tomcat实质就是定位到Bootstrap中的main方法。
这一篇我们来详细分析一下Bootstrap的作用吧
看一波Bootstrap.main()源码

 /**
     * Main method and entry point when starting Tomcat via the provided
     * scripts.
     *
     * @param args Command line arguments to be processed
     */
    public static void main(String args[]) {
   

        synchronized (daemonLock) {
   
            if (daemon == null) {
   
                // Don't set daemon until init() has completed
                Bootstrap bootstrap = new Bootstrap();
                try {
   
                    bootstrap.init();
                } catch (Throwable t) {
   
                    handleThrowable(t);
                    t.printStackTrace();
                    return;
                }
                daemon = bootstrap;
            } else {
   
                // When running as a service the call to stop will be on a new
                // thread so make sure the correct class loader is used to
                // prevent a range of class not found exceptions.
                Thread.currentThread().setContextClassLoader(daemon.catalinaLoader);
            }
        }

        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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值