关于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分析。