tomcat源码阅读_代码篇3

关于digester的详细工作过程,下面对代码进行了简单说明:

        //创建server对象,类为org.apache.catalina.core.StandardServer,第3个参数是说可以使用className属性来改变server对象
        digester.addObjectCreate("Server",
                                 "org.apache.catalina.core.StandardServer",
                                 "className");
        //设置server对象的属性
        digester.addSetProperties("Server");
       
        /*public void addSetNext(String pattern,
        String methodName,
        String paramType)
        */
        digester.addSetNext("Server",
                            "setServer",
                            "org.apache.catalina.Server");
        //同上,但是只能用固定的类来初始化对象
        digester.addObjectCreate("Server/GlobalNamingResources",
                                 "org.apache.catalina.deploy.NamingResources");
        //设置该对象属性
        digester.addSetProperties("Server/GlobalNamingResources");
       
        //同上
        digester.addSetNext("Server/GlobalNamingResources",
                            "setGlobalNamingResources",
                            "org.apache.catalina.deploy.NamingResources");
        //同上,但是第二个参数为null,所以在server.xml必须指定Listener的className属性
        digester.addObjectCreate("Server/Listener",
                                 null, // MUST be specified in the element
                                 "className");
        //同上
        digester.addSetProperties("Server/Listener");
        //同上
        digester.addSetNext("Server/Listener",
                            "addLifecycleListener",
                            "org.apache.catalina.LifecycleListener");

其余部分的含义也大致相同,如果还有不理解的,可以在本博里查看how tomcat works第15章的内容,如果还不清楚,可以结合Digester的doc分析。

原文地址:https://www.cnblogs.com/macula7/p/1960491.html