Tomcat源码解读--代码走读之(三十一的6-12)StandardContext之configure_start(三十三)...

本文详细解析了Tomcat启动过程中的关键步骤,包括ContextConfig的配置启动、TldConfig的执行流程以及NamingContextListener的工作机制等。通过这些内容,读者可以深入了解Tomcat如何初始化上下文并完成资源配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fireLifecycleEvent(Lifecycle.CONFIGURE_START_EVENT,null);StandardContext在此情况下有4listeners

1、ContextConfig,执行configureStart(),方法。

1)、webConfig();

   1)、得到默认的defaultWebXmlWEB-INF/web.xml,在StandardContext中加入watchedResourcesWEB-INF/web.xml,并创建输入流

   2)、parseWebXml(globalWebXml, webXmlDefaultFragment, false);分析默认的web.xml,将结果放入webXmlDefaultFragment对象中。

   3)、得到应用的web.xml的信息流。WEB-INF/web.xml

   4)、parseWebXml(contextWebXml, webXml, false);分析web-inf/web.xml,将结果放入webXml对象中。

   5)、webXml.merge(defaults);将默认的与应用的进行合并,应用的会进行覆盖。

   6)、webXml.configureContext(context),后续介绍。

   7)、处理一些额外的jar包,Map<String,WebXml>fragments = processJarsForWebFragments();在这里生成的一些jar

2)、校验一些额外属性,如下图



 

2StandardHost,在此阶段没有动作。

3TldConfig,主要是执行execute方法。



 

1)、tldScanWebXml();扫描TagLibs

2tldScanResourcePaths(WEB_INF);扫描子jar文件。

3)、扫描一些classLoader加载的文件。

4NamingContextListener



 

1)、创建namingContext对象。1个参数是空hashTable,一个是“/Catalina/localhost/docs

2)、contextNameBindings.put(name,context),进行绑定name=contextNameBindings.put(name,context)context如下图



 

3)、createNamingContext()

    1)、创建compCtx对象,在namingContext里有kv对。

    2)、创建envCtx对象,在compCtx里有kv对。

    3)、在namingResources里找资源,进行增加

    4)、compCtx绑定一些kv



 

4)、ContextBindings.bindClassLoader(container, container, 

          ((Container)container).getLoader().getClassLoader());

    1)、clBindings.put(classLoader, context);

    2)、clNameBindings.put(classLoader, name);

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值