`

Tomcat 源码拜读1

 
阅读更多

1.tomcat 启动类是 Bootstrap 完成一些设置信息反射调用org.apache.catalina.startup.Catalina 中的Load方法

 

?? 为什么要交给调用Catalina 的load??? 

 

 

 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);// load 调用 
                daemon.start();
            } else if (command.equals("stop")) {
                daemon.stopServer(args);
            } else {
                log.warn("Bootstrap: command \"" + command + "\" does not exist.");
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }


  /**
     * Load daemon.
     */
    private void load(String[] arguments)
        throws Exception {

        // Call the load() method
        String methodName = "load";
        Object param[];
        Class paramTypes[];
        if (arguments==null || arguments.length==0) {
            paramTypes = null;
            param = null;
        } else {
            paramTypes = new Class[1];
            paramTypes[0] = arguments.getClass();
            param = new Object[1];
            param[0] = arguments;
        }
        Method method = 
            catalinaDaemon.getClass().getMethod(methodName, paramTypes);
        if (log.isDebugEnabled())
            log.debug("Calling startup class " + method);
        method.invoke(catalinaDaemon, param);

    }





    /**
     * Initialize daemon.
     */
    public void init()
        throws Exception
    {

        // Set Catalina path
        setCatalinaHome();
        setCatalinaBase();

        initClassLoaders();

        Thread.currentThread().setContextClassLoader(catalinaLoader);

        SecurityClassLoad.securityClassLoad(catalinaLoader);

        // Load our startup class and call its process() method
        if (log.isDebugEnabled())
            log.debug("Loading startup class");
        Class startupClass =
            catalinaLoader.loadClass
            ("org.apache.catalina.startup.Catalina");
        Object startupInstance = startupClass.newInstance();

        // Set the shared extensions class loader
        if (log.isDebugEnabled())
            log.debug("Setting startup class properties");
        String methodName = "setParentClassLoader";
        Class paramTypes[] = new Class[1];
        paramTypes[0] = Class.forName("java.lang.ClassLoader");
        Object paramValues[] = new Object[1];
        paramValues[0] = sharedLoader;
        Method method =
            startupInstance.getClass().getMethod(methodName, paramTypes);
        method.invoke(startupInstance, paramValues);

        catalinaDaemon = startupInstance;

    }
分享到:
评论

相关推荐

    tomcat源码+文档pdf+源码解析

    1. **Catalina**:这是Tomcat的核心组件,负责Servlet容器的主要功能,如容器管理、生命周期管理和请求处理。Catalina包含Context、Host和Engine等层次结构,它们分别对应于Web应用、虚拟主机和整个服务器。 2. **...

    Ant编译Tomcat源码、MyEclipse导入Tomcat源码、执行Tomcat源码启动Tomcat

    本篇将详细介绍如何使用Ant编译Tomcat源码,以及如何在MyEclipse环境中导入并运行Tomcat源码。 首先,Ant是Apache软件基金会开发的Java项目自动化构建工具,它能够执行编译、测试、打包等任务。在Apache Tomcat的...

    tomcat源码

    Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...

    tomcat源码导入myeclipse

    1. **准备环境**:确保已安装MyEclipse并配置好Java SDK,因为Tomcat源码是用Java编写的。 2. **获取源码**:从Tomcat官方网站下载源码压缩包,解压后得到源代码目录。 3. **创建项目**:在MyEclipse中创建一个新的...

    tomcat 源码分析系列文档

    1. "Tomcat处理HTTP请求源码分析.doc":详细阐述了Tomcat接收到HTTP请求后,如何解析请求头、执行请求方法、构造响应的过程,包括Servlet生命周期和请求转发等。 2. "Tomcat的类载入器以及源码分析.doc":详细介绍...

    编译tomcat源码所需jar包

    1. **获取源码**:从Apache Tomcat的官方网站下载源码,通常是通过Git克隆官方仓库。 2. **配置环境**:确保你的系统已经安装了JDK、Ant和Maven,并将它们的路径添加到系统PATH。 3. **解压源码**:将下载的源码...

    「Tomcat源码剖析」.pdf

    Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...

    eclipse运行tomcat源码:修改源码:重新编译:重新打包

    1.tomcat源码文件 2.tomcat程序文件 3.Ant程序文件 4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习...

    Tomcat源码开发环境搭建

    手把手教你搭建Tomcat7源码开发环境,如果有了如下说明还搭建不成功,建议考虑下自己的理解能力,能不能走编码这条路。附近包括Tomcat源码、Tomcat源码开发环境依赖的包、Tomcat的环境编译工具ant 1、建立如下...

    IDEA版tomcat源码搭建.docx

    IDEA 版 Tomcat 源码搭建 Tomcat 是一个开源的 Web 服务器软件,由 Apache 软件基金会开发和维护。它支持众多的 Java 库和框架,能够提供高性能和高可扩展性的 Web 应用程序。IDEA 是一款功能强大的集成开发环境...

    tomcat源码依赖包

    1. **Java标准库**:Tomcat作为Java应用服务器,依赖于JDK提供的标准API,如Java SE的javax.servlet、java.io、java.net等核心包。 2. **Apache Ant**:Ant是一个Java库和命令行工具,用于构建Java项目,它是编译...

    tomcat7源码

    1. `Server`:位于`org.apache.catalina.core`包下,是整个Tomcat服务器的顶级容器,包含了所有其他组件。 2. `Service`:每个`Server`可以包含多个`Service`,`Service`包含了Connector和Engine。 3. `Connector`:...

    tomcat源码包

    tomcat的源码包

    tomcat8源码

    1. **Tomcat架构概述** Tomcat的核心架构主要分为几个部分:Catalina(核心处理引擎)、Jasper(JSP编译器)、 Coyote(HTTP/1.1协议处理器)和Juli(日志系统)。Catalina负责管理Web应用程序,Jasper处理JSP文件...

    tomcat源码编译所需jar包

    《深入解析Tomcat源码编译所需jar包》 Tomcat作为一款广泛应用的开源Web服务器和Servlet容器,其源码的编译与理解对于开发者来说是提升技术水平的重要途径。源码编译过程中,jar包的正确配置至关重要。本文将详细...

    tomcat 源码commons-collection

    tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码

    Tomcat源码研究.pdf

    1. Catalina脚本解析:Catalina是Tomcat的主引擎,负责整个容器的初始化和处理。在Tomcat源码中,Catalina的脚本解析是了解其启动流程的关键。首先,Tomcat会解析conf/server.xml文件,该文件中定义了所有容器组件的...

Global site tag (gtag.js) - Google Analytics