apacheTomcat的Bootstrap类都做了什么工作

Tomcat启动流程解析

 我在以前写过一些纯粹的后端程序,对于这样的程序,当程序启动的时候,我想,最重要的是什么呢?

  我在哪里?对,就是我这个程序运行在那个目录,我的配置文件放在哪里?我的日志文件放在哪里?我的临时文件放哪里?

首先,一个类来负责将这些信息采集到手,转换为创建某个对象传入的参数。

   tomcat是一个应用程序,所以,首先要做的事情,就是找到自己运行所在的目录,因为启动程序,都是使用java这个命令,那么发生这个命令的调用的目录,也可能是在启动脚本中设置的目录。

  一般,调用java的System.getProperties("user.dir");这个获得的是运行java程序所在的目录,未必就是tomcat的真实的目录,所以,需要判断是不是不存在系统属性里面配置了catallina.home,如果配置了,就使用,否则,就使用user.dir这个目录作为运行目录。

启动程序的两个可能途径:

  1.在程序放置的真实目录执行脚本启动

  2.将脚本放置到PATH路径内,在其他任何目录都能通过脚本启动

 

  Bootstrap类

  静态初始化代码块的功能,

  1.确定catalina.home和catalina.base

  catalina.home是安装目录,运行程序必须的两个目录lib和bin

  catalina.base是运行tomcat实例必须的,个性化的目录conf ,temp , webapps ,logs 这个四个目录

  这个类设置好这两个属性,提供给程序后续使用。

  要启动tomcat,至少需要catalina.home才能启动,没有catalina.base的话,就把catalina.home当做catalina.base使用。

  2.初始化好三种类加载器,为后续启动webapp应用做准备

  三种类加载器的实现方式,具有不同名称和父加载器的ClassLoaderFactory的产生的实例而已。

  这里的类加载器实现方式,纯粹的是把指定的目录下面的资源都提前枚举出来,当调用load方法时,依次遍历而已罢了。

  如果把jdk提供的类加载器抽象成一个,简称为jdk类加载器,那么,这个类加载器下面,就是tomcat的common类加载器,而这个common类加载器下面就分别有server类加载器和shared类加载器。

  这里创建好类加载器,就为创建catalina对象做好了准备了。

  一个Bootstrap对象,负责初始化一个catalina对象,是1对1的关系。

  3.创建catalina对象

  在main方法里面,根据传入的参数,反射调用catalina对象的同名的方法。

 

转载于:https://www.cnblogs.com/weiguangyue/p/9498806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值