omcat源码解读--代码走读之Catalina. load(六)

承接上文,在执行参数校验和设置之后,就开始执行startupInstance的load();方法,主要有以下内容。



 

 

 

1、  initDirs(),此方法是设置“catalina.home”和“catalina.base”的路径,设置为绝对路径。

 

 

2、  initNaming(),此方法是设置Naming,将URL_PKG_PREFIXES = "java.naming.factory.url.pkgs"设置为"org.apache.naming",将INITIAL_CONTEXT_FACTORY= "java.naming.factory.initial" 设置为"org.apache.naming.java.javaURLContextFactory"。

3、  创建digester对象,digester的任务就是将xml文档里DOM信息,映射为对象,可以参考这篇文章http://onjava.com/pub/a/onjava/2002/10/23/digester.html?page=1,主要映射的对象有Server、Server/GlobalNamingResources、Server/Listener、Server/Service、Server/Service/Listener、Server/Service/Executor、Server/Service/Connector、Server/Service/Connector/Listener、等等。这里有一个重点,设置父classloader为sharedLoader,如下图,后续会说明。

 

 

4、  去加载conf/server.xml这个文件,以InputStream方式引入,之后做了一些如果inputStream==null的处理过程。

5、  用digester对象去解析xml文档,digester.push(this)传入当前对象startupInstance,digester.parse(inputSource)传入的上个步骤中产生的inputStream对象,最终解析conf/server.xml文档,根据dom的树形结构并建立关系,形成对象树赋值给startupInstance的server属性。

6、  获取当前对象startupInstance的属性server,并且调用init方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值