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;
}
分享到:
相关推荐
1. **Catalina**:这是Tomcat的核心组件,负责Servlet容器的主要功能,如容器管理、生命周期管理和请求处理。Catalina包含Context、Host和Engine等层次结构,它们分别对应于Web应用、虚拟主机和整个服务器。 2. **...
本篇将详细介绍如何使用Ant编译Tomcat源码,以及如何在MyEclipse环境中导入并运行Tomcat源码。 首先,Ant是Apache软件基金会开发的Java项目自动化构建工具,它能够执行编译、测试、打包等任务。在Apache Tomcat的...
Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...
1. **准备环境**:确保已安装MyEclipse并配置好Java SDK,因为Tomcat源码是用Java编写的。 2. **获取源码**:从Tomcat官方网站下载源码压缩包,解压后得到源代码目录。 3. **创建项目**:在MyEclipse中创建一个新的...
1. "Tomcat处理HTTP请求源码分析.doc":详细阐述了Tomcat接收到HTTP请求后,如何解析请求头、执行请求方法、构造响应的过程,包括Servlet生命周期和请求转发等。 2. "Tomcat的类载入器以及源码分析.doc":详细介绍...
1. **获取源码**:从Apache Tomcat的官方网站下载源码,通常是通过Git克隆官方仓库。 2. **配置环境**:确保你的系统已经安装了JDK、Ant和Maven,并将它们的路径添加到系统PATH。 3. **解压源码**:将下载的源码...
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
1.tomcat源码文件 2.tomcat程序文件 3.Ant程序文件 4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习...
手把手教你搭建Tomcat7源码开发环境,如果有了如下说明还搭建不成功,建议考虑下自己的理解能力,能不能走编码这条路。附近包括Tomcat源码、Tomcat源码开发环境依赖的包、Tomcat的环境编译工具ant 1、建立如下...
IDEA 版 Tomcat 源码搭建 Tomcat 是一个开源的 Web 服务器软件,由 Apache 软件基金会开发和维护。它支持众多的 Java 库和框架,能够提供高性能和高可扩展性的 Web 应用程序。IDEA 是一款功能强大的集成开发环境...
1. **Java标准库**:Tomcat作为Java应用服务器,依赖于JDK提供的标准API,如Java SE的javax.servlet、java.io、java.net等核心包。 2. **Apache Ant**:Ant是一个Java库和命令行工具,用于构建Java项目,它是编译...
1. `Server`:位于`org.apache.catalina.core`包下,是整个Tomcat服务器的顶级容器,包含了所有其他组件。 2. `Service`:每个`Server`可以包含多个`Service`,`Service`包含了Connector和Engine。 3. `Connector`:...
tomcat的源码包
1. **Tomcat架构概述** Tomcat的核心架构主要分为几个部分:Catalina(核心处理引擎)、Jasper(JSP编译器)、 Coyote(HTTP/1.1协议处理器)和Juli(日志系统)。Catalina负责管理Web应用程序,Jasper处理JSP文件...
《深入解析Tomcat源码编译所需jar包》 Tomcat作为一款广泛应用的开源Web服务器和Servlet容器,其源码的编译与理解对于开发者来说是提升技术水平的重要途径。源码编译过程中,jar包的正确配置至关重要。本文将详细...
tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码
1. Catalina脚本解析:Catalina是Tomcat的主引擎,负责整个容器的初始化和处理。在Tomcat源码中,Catalina的脚本解析是了解其启动流程的关键。首先,Tomcat会解析conf/server.xml文件,该文件中定义了所有容器组件的...