Digester digester = createStartDigester();
将<Server>节点,解析为一个org.apache.catalina.core.StandardServer对象,<br>如果配置了className属性,则会解析对应的类对象。
digester.addObjectCreate("Server",<br> "org.apache.catalina.core.StandardServer",<br> "className");
将<Server>节点中的属性,使用StandardServer对象对应的set方法进行属性初始化
digester.addSetProperties("Server");
将<Server>节点对应的对象,调用<Server>节点的父节点对象的<br>setServer(org.apache.catalina.Server params)方法,<br>Server的父对象为this,后面会设置,也就Catalina对象。
digester.addSetNext("Server",<br> "setServer",<br> "org.apache.catalina.Server");
创建Connector对象,在里面会初始化executor
digester.addRule("Server/Service/Connector",<br> new ConnectorCreateRule());
a. endpoint = new JIoEndpoint();
b. cHandler = new Http11ConnectionHandler(this); //
c. ((JIoEndpoint) endpoint).setHandler(cHandler); // endpoint对应的连接处理器
根据Connector节点的属性,调用set方法进行初始化,除开executor属性。
digester.addRule("Server/Service/Connector",<br> new SetAllPropertiesRule(new String[]{"executor"}));
将Connector对象通过调用Service.addConnector方法添加到Service中去,<br>addConnector方法并不是简单的实现,还有其他逻辑,后面在详细的介绍。
digester.addSetNext("Server/Service/Connector",<br> "addConnector",<br> "org.apache.catalina.connector.Connector");
addRuleSet方法实现也不复杂,就是调用NamingRuleSet、<br>EngineRuleSet这些类的addRuleInstances方法
digester.addRuleSet(new NamingRuleSet("Server/GlobalNamingResources/"));<br>...