`
22cgreen
  • 浏览: 55197 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

tomcat(1)之Bootstrap.java

阅读更多
此类的作用,就是
* Initialize daemon. 初始化
* 主要有以下过程
* 1)设置环境变量,初始化类加载器,事实上就是为commonLoader,catalinaLoader,sharedLoader,不过这里其实都为
* commonLoader,因为其它几个并没配置,配置文件位于
org.apache,catalina.startup中的catalina.properties。
common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar
server.loader=
shared.loader=

* 2)设置当前线程当前类加载器,也是commonLoader,其实commonLoader就是批向tomcat/lib中的一个加载器.
也是tomcat的核心类库的加载位置,相然用的一些包也可以放在这个目录,同样可以被tomcat默认加载器
加载。
* 3)加载org.apache.catalina.startup.Catalina,并设置父加载器为commonLoader,最后把实例附值给catalinaDaemon
通过反射方式得到Catalina实例,同时设置Catalina的一个属性(也就是父加载器)为:commonLoader
然后把实例传给属性catalinaDaemon,其它方法通这个实例来操作类Catalina的实例。
* 初始化完成.
* 从这个初始化来看,只处理两个方面,1)设置加载器 2)产生Catalina实例
* 然后如一些start,load,stop都是调用类Catalina中相应方法来完成.(利用反射的方式)
我们看批处理最后执行的命令为:..apache.catalina.startup.Bootstrap  start,显然带的参数是start.
在启动时主要执行Catalina实例的二个方法:

1)load
2)start
源码:
  daemon.load(args); //加载参数,这里args为main方法中的参数,从最后批处理执行来看,只一个参数start,因此
  //args中只有一个元素的数组,这个元素值为:start
  daemon.start();
 
  我们来看看方法Bootstrap中的load做了什么事。
  ----------------------------------------------------------------------------------------------------
  /**
     * 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);

    }
   注:从原码看得出来,这个方法是把从args主方法传入的值,也就是start再作为参数执行Catalina中的load方法。

    再来看看start做了什么。
    ----------------------------------------------------------------------------------------------------
    public void start()
        throws Exception {
        if( catalinaDaemon==null ) init(); //如果实例为空,进行初始化。

        Method method = catalinaDaemon.getClass().getMethod("start", (Class [] )null);
        method.invoke(catalinaDaemon, (Object [])null);

    }
   
    注:从原码看得出,也就执行Catalina中的start方法。

分享到:
评论

相关推荐

    tomcat-bootstrap and juli.jar

    Juli提供了一套更灵活的日志记录机制,相比于Java内置的java.util.logging.Logger,Juli提供了更多配置选项和更强大的功能,比如支持多个日志文件、定制日志格式、控制台输出等。 在Tomcat中,Juli主要用于记录...

    带注释的Bootstrap.java

    import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; ...

    bootstrap开启与关闭tomcat

    3. **JVM启动参数**: Tomcat可以通过JVM启动参数传递额外的配置信息,如`-Dcatalina.home`和`-Djava.endorsed.dirs`等,这些参数可以覆盖默认配置。 4. **加载Web应用**: 根据`server.xml`中的配置,Tomcat会加载...

    解决bootstrap路径问题

    6. 更新或添加正确的`bootstrap.jar`路径(通常是Tomcat安装目录下的`bin`子目录),同样确保`tools.jar`(通常位于Java JDK的`lib`目录下)路径也是准确的。 7. 保存配置,然后重新启动Tomcat服务器,看看是否解决...

    品优购springboot+mybatis+bootstrap.zip

    "品优购springboot+mybatis+bootstrap.zip"是一个包含电商项目源码的压缩包,主要使用了Java、Spring Boot、MyBatis和Bootstrap这四个关键技术和框架。下面将详细介绍这些技术及其在该项目中的作用。 1. **Spring ...

    apache-tomcat-8.5.12.zip

    1. **Java Servlet支持**:Tomcat作为Servlet容器,允许开发者使用Java Servlet API来编写动态Web内容。 2. **JSP支持**:支持JavaServer Pages技术,使得开发人员可以通过HTML模板和Java代码结合创建动态网页。 3. ...

    Tomcat研究之ClassLoader.pdf

    2. **System ClassLoader**:通常由JVM的`java.class.path`系统属性指向,负责加载`$CATALINA_HOME/bin/bootstrap.jar`中的类库,这些类主要用于初始化Tomcat并执行主方法。 3. **Common ClassLoader**:这个类加载...

    Tomcat Using CLASSPATH:报错和启动成功无法访问情况解决方案

    Tomcat 排错方案一、报错问题解:1.报错2.解决方案:二、Tomcat启动成功无法访问 一、报错问题解: 1.报错 Using CLASSPATH: /...

    Java项目:网上订餐管理系统(java+JSP+bootstrap+jQuery+Mysql)

    项目介绍基于JSP+Servlet的网上订餐管理系统的设计与实现。该项目为前后台管理项目。前台主要展示给普通用户,主要功能有菜品分类、最新菜品、销售排行、美食... 前端:JSP+bootstrap+jQuery使用说明1. 使用IDEA/Ecli

    Linux下配置jdk+tomcat[归类].pdf

    JAVA_OPTS="-server -Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=512 -Djava.awt.headless=true" ``` 这些参数将优化Tomcat的内存使用。 5. 使Tomcat启动脚本具有执行权限,使用命令`sudo chmod 777 *....

    apache-tomcat-9.0.54-embed.tar.gz

    Apache Tomcat 9.0.54 是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。这个压缩包文件 "apache-tomcat-9.0.54-embed.tar.gz" 包含了可嵌入式的Tomcat版本,这意味着它可以在不依赖独立服务器的...

    tomcat6.x源码编译依赖的jar包

    tomcat6.x源码编译时需要依赖的所有JAR包...7.找到Bootstrap.java,debug as>debug configurations>VM arguments:输入-Dcatalina.base="(改成你自己的)E:\apache-tomcat-6.0.37-src\output\buildoutput\build" 8.OK.

    tomcat启动debug.txt

    1. **环境变量设置**:首先设置一系列环境变量,如`JAVA_HOME`(指定Java安装目录)、`CATALINA_HOME`(指定Tomcat安装目录)等。 2. **调用`bootstrap.jar`**:通过调用`bootstrap.jar`中的类来启动Tomcat。这部分...

    基于SSM框架的完整项目 Spring+SpringMVC+Mybatis+mysql+bootstrap.rar

    1. **Spring框架**:Spring是一个全面的企业级应用框架,它提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等功能。在本项目中,Spring主要负责管理各个组件的生命...

    tomcat免安装版+java环境变量的配置

    ### tomcat免安装版+java环境变量的配置 #### 知识点一:理解免安装版Tomcat与Java环境变量的关系 在部署Web应用程序时,经常需要用到Tomcat服务器。对于那些希望快速设置并运行Tomcat而不想进行复杂安装过程的...

    mayday博客系统,基于springboot、mybatis、ehcache、thymeleaf、bootstrap.zip

    Spring Boot简化了Spring的应用配置,提供了一种快速开发独立应用的方式,它内嵌了Tomcat服务器,使得部署更为简便。MyBatis是一个轻量级的ORM(对象关系映射)框架,用于处理SQL数据库的交互,它可以将SQL语句与...

    毕业设计,校园新闻系统,使用SpringBoot、SpringMVC、Mybatis、Bootstrap.zip

    它内置了Tomcat服务器,提供了自动配置功能,使得开发者可以快速创建独立运行的、生产级别的Java应用。在本项目中,SpringBoot负责整个应用的启动、配置和管理,包括数据库连接、服务的启动等,极大地提高了开发效率...

    tomcat6源代码+依赖包

    tomcat6.x源码编译时需要依赖的所有JAR包:包括...7.找到Bootstrap.java,debug as>debug configurations>VM arguments:输入-Dcatalina.base="(改成你自己的)E:\apache-tomcat-6.0.37-src\output\buildoutput\build

Global site tag (gtag.js) - Google Analytics