tomcat的启动过程
平时我们通过bin目录下的startup.bat来启动tomcat,startup.bat又调用了catalina.bat,catalina.bat从命令行启动org.apache.catalina.startup.Bootstrap,这个类有main方法,所以可以从命令行执行。
Bootstrap执行后,首先执行init()方法进行初始化,然后调用load()和start()方法。下面具体介绍init()方法、load()、start()方法。
一、init()
1、首先设置catalina.home,catalina.base这两个环境变量;
2、创建了三个类加载器
根据conf/catalina.properties中的配置,初始化了三个ClassLoader:commonLoader、catalinaLoader、sharedLoader;并且把catalinaLoader设置为当前线程上下文的类加载器;
然后通过下面的语句创建Catalina类的对象(变量名是catalinaDaemon):
Class startupClass =catalinaLoader.loadClass ("org.apache.catalina.startup.Catalina");
Object startupInstance = startupClass.newInstance();
二、load()
通过反射机制,调用catalina对象的load()方法------在该方法中,初始化一些目录,比如temp目录,初始化名称空间,如java:env;然后使用Digester的方式,根据server.xml的配置来装配tomcat的各个组件,这里暂时提一下tomcat的结构,tomcat顶层组件是Server,Server下面有多个Service组件,还有Connector、Engin、Host等。装配组件的过程中,生成了各个组件的对象,并设置了他们之间的关联关系。
三、start()
该方法里面,通过反射机制,调用了Catalina对象的start()方法。Catalina对象的start()方法又调用了Server对象的Start()方法,并设置关闭Server的回调方法。
上面简单说明了一下tomcat的启动过程,下一次会给出tomcat的类图、序列图等来说明各个组件之间的关系。
tomcat的启动过程相关推荐
- tomcat启动_tomcat学习|tomcat的启动过程
开头说两句 小刀博客: https://www.lixiang.red 小刀公众号: 程序员学习大本营 学习背景 在前两篇中,我们讲述了tomcat的源码结构 https://www.lixiang. ...
- Tomcat源码解析三:tomcat的启动过程
Tomcat组件生命周期管理 在Tomcat总体结构 (Tomcat源代码解析之二)中,我们列出了Tomcat中Server,Service,Connector,Engine,Host,Context ...
- Tomcat启动过程中找不到JAVA_HOME解决方法
在XP上明明已经安装了JDK1.5并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到. 报错信息如下:Neither the JAVA_HOME nor the JRE_HOME en ...
- java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动
在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...
- Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
前面一段时间看到Tomcat7.0发布了几个测试版,由于没有稳定,也就没有测试了,今天看到新闻,看到Tomcat7.0正式版已经发布了,到官网上下载下来,看看效果如何. 下面列出Tomcat 7的一些 ...
- JAVA项目中找不到tomcat_Tomcat启动过程中找不到JAVA_HOME解决方法
在XP上明明已经安装了JDK1.5并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到. 报错信息如下:Neither the JAVA_HOME nor the JRE_HOME en ...
- tomcat的启动流程及原理
组件介绍: Tomcat 最重要的是两个组件是:Connector(连接器) 和 Container(容器/集装箱),Connector 组件是可以被替换,这样可以提供给服务器设计者更多的选择,因为这 ...
- Tomcat源码解读系列(二)——Tomcat的核心组成和启动过程
声明:源码版本为Tomcat 6.0.35 前面的文章中介绍了Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话,整个Tomcat ...
- tomcat启动过程-start启动
tomcat源码系列导航栏 tomcat源码分析环境搭建 tomcat启动过程-load初始化 tomcat启动过程-start启动 目录 前言 启动流程 启动入口main函数 代码块一 start ...
最新文章
- PHP中把stdClass Object转array的几个方法
- DeepFake 入门了解
- springmvc二十:数据绑定
- 042、用volume container 共享数据 (2019-03-05 周二)
- 【UVA1638】杆子的排列
- oracle内部错误排查,Oracle内部错误ORA-600:[1112]
- 使用smo算法编写svm对CIFAR-10数据分类
- DataGrid 首次进入页面时,不要加载任何数据
- 截止今年六月底的s9t9
- 牛客网sql练习题解(43-51)
- win10修改dns服务器命令,Win10怎么更改首选DNS服务器地址?
- 使用MATLAB任意修改图片像素大小
- excel 置信区间 计算_用Excel求置信区间.ppt
- 怎样用excel剔除异常数据_注意避坑 | 这10个错误的Excel使用方法别再用了!
- Scratch编程与游戏:大鱼吃小鱼!
- android studio 模拟器文件管理器
- 阿里巴巴助攻腾讯破6.2亿微商传销第一大案!涉案公众号粉丝2400
- 程序员的工资高,到底程序员的工资有多高?那些你不了解的程序员
- POJ3420-Quad Tiling
- 数据安全及各种加密算法对比
热门文章
- 突破生命法则极限!它会是外星生命的遗传密码?
- idea做一个日志自动生成的jar包,并用flume做生产者,采集日志数据,用kafka做消费者来消费日志数据
- jeecgboot:主表(antd table)默认选中第一条记录
- 华为服务器安装Ubuntu 18.04.2 详细步骤(附图文介绍)
- 【ZZULIOJ】 Python 1016: 银行利率
- 《Linux C编程从入门到精通》——1.4 Linux的常用命令
- 静态成员和非静态成员的区别是什么?
- MySQL命令行导出导入数据库和数据表
- php emoji表情,PHP处理字符中的emoji表情
- Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time简介