1、Engine解析过程
1.1创建Engine实例
//EngineRuleSet.addRuleInstances
digester.addObjectCreate(prefix+"Engine","org.apache.catalina.core.StandardEngine","className");
digester.addSetProperties(prfix+"Engine");
digester.addRule(prefix+"Engine",new LifecycleListenerRule("org.apache.catalina.startup.EngineConfig","engineConfigClass"));
digester.addSetNext(prefix+"Engine","setContainer","org.apache.catalina.Engine");
创建Engine实例,并将其通过setContainer()方法添加到Service实例,Catalina默认实现为org.apache.catalina.core.StandardEngine。同时,还为Engine添加了一个生命周期监听器EngineConfig。注意,此类是在创建时默认添加的,并非由server.xml配置实现。该监听器用于打印Engine启动和停止日志。
1.2为Engine添加集群配置
//EngineRuleSet.addRuleInstances
digester.addObjectCreate(prefix+"Engine/Cluster",null,"className");
digester.addSetProperties(prefix+"Engine/Cluster");
digester.addSetNext(prefix+"Engine/Cluster","setCluster","org.apache.catalina.Cluster");
具体集群实现类由className属性指定。
1.3为Engine添加生命周期监听器
//EngineRuleSet.addRuleInstances
digester.addObjectCreate(prefix+"Engine/Listener",null,"className");
digester.addSetProperties([refix+"Engine/Listener");
digester.addSerNext(prefix+"Engine/Listener"."addLifecycleListener","org.apache.catalina.LifecycleListener");
与EngineConfig不同,此部分监听器由server.xml配置。默认情况下,Catalina未指定Engine监听器。
1.4为Engine添加安全配置
//EngineRuleSet.addRuleInstances
digester.addObjectCreate(new RealmRUleSet(prefix+"Engine/"));
digester.addObjectCreate(prefix+"Engine/Value",null,"className");
digester.addSetProperties(prefix+"Engine/Value/");
digester.addSetNext(prefix+"Engine/Value","addValue","org.apache.catalina.Value");
为Engine添加安全配置以及拦截器Value,具体的拦截器类由className属性指定。
2、Host解析过程
2.1创建Host实例
//HostRuleSet.addRuleInstances
digester.addObjectCreate(prefix+"Host","org.apache.catalina.core.StandardHost","className");
digester.addSetProperties(preifx+"Host");
digester.addRule(prefix+"Host",new CoypParentClassLoaderRule(