`
JackyCheng2007
  • 浏览: 253860 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat 6 启动过程分析 (1) - Bootstrap

阅读更多
package org.apache.catalina.startup;
public final class Bootstrap

Bootstrap 是tomcat的启动入口类。它负责构建一个class loader用来装载Catalina的内部类,并且启动tomcat。这样做可以使得Catalina的内部类和系统class path相分离,从而使他们对应用程序级别的类不可见。

主要的方法:

主函数:main
public static void main(String args[])
这自然是入口方法:
首先,判断if (daemon == null),创建:daemon = new Bootstrap();,然后调用daemon.init(); 然后,根据传入的参数(start, startd, stopd, start)来调用daemon 的start或者stop方法。

daemon.init()
首先设置Catalina path
        setCatalinaHome();
        setCatalinaBase();
然后,调用 initClassLoaders();
然后,用catalinaLoader装载我们的startup类org.apache.catalina.startup.Catalina,并且调用他的process()方法。然后,设置
共享扩展类的loader。最后将新建的Catalina实例付给catalinaDaemon。

initClassLoaders()
调用createClassLoader方法创建commonLoader, catalinaLoader和sharedLoader。
commonLoader 是 catalinaLoader和sharedLoader 的父loader。如果commonLoader 没有指定的配置文件commonLoader.loader那就用当前的loader。
commonLoader=this.getClass().getClassLoader();

createClassLoader()
如果没有相应的配置文件,就返回父loader。在single环境中,3个loader都指向当前的loader。

daemon.start()
调用catalinaDaemon的start方法。






6
1
分享到:
评论
2 楼 JackyCheng2007 2008-06-11  
其实,这样做就是为了要用指定的classLoader来装载实例。如果用new来构建,那就是用默认的JVM classLoader装载了。
1 楼 microjuz 2008-06-10  
有个问题,Bootstrap中实例Catalina和调用其方法用的都是反射机制,如下
Class startupClass =
            catalinaLoader.loadClass
            ("org.apache.catalina.startup.Catalina");
Object startupInstance = startupClass.newInstance();

我不太明白这么做的原因?

相关推荐

    Tomcat 6 启动过程分析.doc

    总结来说,Tomcat 6的启动过程涉及到Bootstrap类的初始化、Catalina类的加载和配置解析,以及Digester的XML解析功能。这个过程保证了Tomcat能够正确地加载和应用配置,启动并运行Java Web应用程序。理解这一过程对于...

    Tomcat 6.0启动过程分析

    ### Tomcat 6.0 启动过程分析 #### Bootstrap 类的作用 `Bootstrap` 类作为 Tomcat 的启动入口,承担着构建一个独立的类加载器的任务,用于装载 `Catalina` 的内部类,以此来确保这些内部类与系统的 classpath 相...

    springboot-bootstrap 后台管理系统.zip

    SpringBoot是Spring框架的一个衍生项目,旨在简化Spring应用的初始搭建以及开发过程。它通过自动配置和起步依赖(Starter POMs)使得创建独立的、生产级别的基于Spring的应用变得极其简单。SpringBoot摒弃了XML配置...

    ant启动tomcat

    - `${tomcat.home}/bin/bootstrap.jar" fork="true">`:通过执行Tomcat的bootstrap.jar文件来启动Tomcat。`fork="true"`表示在新的Java虚拟机进程中运行该任务。 - `<jvmarg value="-Dcatalina.home=${tomcat.home...

    tomcat启动的时序图

    - **Bootstrap 类**:启动过程始于`Bootstrap`类。这个类主要负责创建Tomcat的主要组件,并初始化系统环境。 - `initClassLoaders()`:初始化类加载器,为后续的组件加载做准备。 - `parse(server.xml)`:解析`...

    apache-tomcat-9.0.8-src可直接导入eclipse的源码

    "org.apache.catalina.startup.Bootstrap"是调试的入口点,它是Tomcat启动过程的核心类。Bootstrap负责初始化Tomcat的基本组件,如加载配置文件、创建并启动Catalina容器,以及执行其他必要的初始化任务。当你在...

    tomcat 学习与分析总结资料

    1. **Tomcat启动脚本catalina** Tomcat的启动脚本`catalina.sh/bat`是服务器运行的关键。这个脚本负责配置环境变量、初始化Java选项,并启动或关闭Tomcat服务器。通过研究这个脚本,我们可以了解如何配置JVM参数,...

    Java 类在 Tomcat 中是如何加载的(过程分析)

    - **System类加载器**:加载Tomcat启动所需的类,如bootstrap.jar。 - **Common类加载器**:加载Tomcat共用的类库,这些类库位于`CATALINA_HOME/lib`目录下。 - **Webapp类加载器**:每个Web应用程序都有自己独立...

    我的tomcat7源码手撕过程

    这个类是Tomcat启动的入口点。 4. **Bootstrap类解析**: - `main`方法中,“start”关键字引导程序进入`start`方法,进而调用`load`方法。 - `load`方法通过反射机制加载`org.apache.catalina.startup.Catalina`...

    tomcat一闪的问题—已解决

    通常表现为在尝试启动Tomcat时,控制台窗口快速出现后又立即关闭,导致无法正常启动Tomcat服务。这不仅影响了开发者的工作效率,还可能成为部署应用程序过程中的障碍。本文将针对这一问题进行深入分析,并提供一种...

    Tomcat源码分析1

    首先,Tomcat的启动过程始于`startup.bat`或`startup.sh`脚本,这些脚本最终调用`org.apache.catalina.startup.Bootstrap`类的`main`方法。此方法的首要任务是定义和初始化Tomcat的类加载器。类加载器是Java程序中至...

    Tomcat源码研究.pdf

    - **脚本功能**:`catalina.bat`是Tomcat启动过程中的关键脚本之一,其主要作用在于构建合适的Java命令行参数,进而启动Tomcat服务。此脚本根据环境变量及用户提供的命令行参数,生成并执行最终的Java命令。 - **...

    Tomcat 原理解说

    Tomcat 启动过程分析 Tomcat 的启动主要涉及以下几个步骤: 1. **启动命令行参数**:通常通过执行`startup.bat`或`startup.sh`脚本来启动Tomcat。这些脚本设置JVM的环境变量,如`catalina.base`和`catalina.home`...

    tomcat启动脚本

    标题“Tomcat启动脚本”涉及的是Apache Tomcat服务器的启动流程,这通常涉及到一系列的配置文件和命令行操作。Tomcat是Java Servlet和JavaServer Pages(JSP)的开源应用服务器,它提供了运行Web应用程序的环境。在...

    springboot+bootstrap博客系统源码

    通过阅读和分析源码,可以深入了解Spring Boot的自动配置、AOP、RESTful API设计,以及Bootstrap的响应式布局和组件使用。这对于提升Web开发技能,尤其是微服务架构和前端框架的应用有极大的帮助。

    springboot+mybatis+bootstrap商城系统

    在SpringBoot的基础上,这个系统利用了Spring Boot的自动配置、内嵌式Web服务器(如Tomcat)以及对Spring MVC的集成,大大简化了项目的构建和部署过程。开发者无需过多关注繁琐的配置,而是可以更加专注于业务逻辑的...

    tomcat源码分析

    7. **启动过程**: - `StandardServer.start`继续执行启动流程,触发启动事件。 #### 四、总结 通过上述对Tomcat源码的分析,我们可以更深入地理解Tomcat内部的工作原理和架构设计。特别地,了解Tomcat如何管理其...

    《深入剖析 Tomcat》PDF版本下载.txt

    #### 3.1 启动过程 当启动Tomcat时,其核心组件会按照一定的顺序初始化并准备就绪: 1. **Bootstrap ClassLoader**加载Bootstrap类库; 2. **Catalina ClassLoader**加载Tomcat核心类库; 3. **Common ClassLoader*...

    tomcat6源码,学习服务引擎

    1. **启动流程**:从`org.apache.catalina.startup.Bootstrap`类的`main()`方法开始,了解Tomcat如何初始化并启动各个组件。 2. **请求处理**:关注`org.apache.coyote`包下的Request和Response对象,以及对应的...

Global site tag (gtag.js) - Google Analytics