此类的作用,就是
* 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方法。
分享到:
相关推荐
Juli提供了一套更灵活的日志记录机制,相比于Java内置的java.util.logging.Logger,Juli提供了更多配置选项和更强大的功能,比如支持多个日志文件、定制日志格式、控制台输出等。 在Tomcat中,Juli主要用于记录...
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; ...
3. **JVM启动参数**: Tomcat可以通过JVM启动参数传递额外的配置信息,如`-Dcatalina.home`和`-Djava.endorsed.dirs`等,这些参数可以覆盖默认配置。 4. **加载Web应用**: 根据`server.xml`中的配置,Tomcat会加载...
6. 更新或添加正确的`bootstrap.jar`路径(通常是Tomcat安装目录下的`bin`子目录),同样确保`tools.jar`(通常位于Java JDK的`lib`目录下)路径也是准确的。 7. 保存配置,然后重新启动Tomcat服务器,看看是否解决...
"品优购springboot+mybatis+bootstrap.zip"是一个包含电商项目源码的压缩包,主要使用了Java、Spring Boot、MyBatis和Bootstrap这四个关键技术和框架。下面将详细介绍这些技术及其在该项目中的作用。 1. **Spring ...
1. **Java Servlet支持**:Tomcat作为Servlet容器,允许开发者使用Java Servlet API来编写动态Web内容。 2. **JSP支持**:支持JavaServer Pages技术,使得开发人员可以通过HTML模板和Java代码结合创建动态网页。 3. ...
2. **System ClassLoader**:通常由JVM的`java.class.path`系统属性指向,负责加载`$CATALINA_HOME/bin/bootstrap.jar`中的类库,这些类主要用于初始化Tomcat并执行主方法。 3. **Common ClassLoader**:这个类加载...
Tomcat 排错方案一、报错问题解:1.报错2.解决方案:二、Tomcat启动成功无法访问 一、报错问题解: 1.报错 Using CLASSPATH: /...
项目介绍基于JSP+Servlet的网上订餐管理系统的设计与实现。该项目为前后台管理项目。前台主要展示给普通用户,主要功能有菜品分类、最新菜品、销售排行、美食... 前端:JSP+bootstrap+jQuery使用说明1. 使用IDEA/Ecli
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 是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。这个压缩包文件 "apache-tomcat-9.0.54-embed.tar.gz" 包含了可嵌入式的Tomcat版本,这意味着它可以在不依赖独立服务器的...
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.
1. **环境变量设置**:首先设置一系列环境变量,如`JAVA_HOME`(指定Java安装目录)、`CATALINA_HOME`(指定Tomcat安装目录)等。 2. **调用`bootstrap.jar`**:通过调用`bootstrap.jar`中的类来启动Tomcat。这部分...
1. **Spring框架**:Spring是一个全面的企业级应用框架,它提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等功能。在本项目中,Spring主要负责管理各个组件的生命...
### tomcat免安装版+java环境变量的配置 #### 知识点一:理解免安装版Tomcat与Java环境变量的关系 在部署Web应用程序时,经常需要用到Tomcat服务器。对于那些希望快速设置并运行Tomcat而不想进行复杂安装过程的...
Spring Boot简化了Spring的应用配置,提供了一种快速开发独立应用的方式,它内嵌了Tomcat服务器,使得部署更为简便。MyBatis是一个轻量级的ORM(对象关系映射)框架,用于处理SQL数据库的交互,它可以将SQL语句与...
它内置了Tomcat服务器,提供了自动配置功能,使得开发者可以快速创建独立运行的、生产级别的Java应用。在本项目中,SpringBoot负责整个应用的启动、配置和管理,包括数据库连接、服务的启动等,极大地提高了开发效率...
tomcat6.x源码编译时需要依赖的所有JAR包:包括...7.找到Bootstrap.java,debug as>debug configurations>VM arguments:输入-Dcatalina.base="(改成你自己的)E:\apache-tomcat-6.0.37-src\output\buildoutput\build