Digester 在tomcat启动的时候利用SAX2来解析server.xml. SAX - Simple API for XML, 是一种基于java的xml API。可以看篇文章了解更多:[url]http://www.iteye.com/topic/181865 [/url]
引用
SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag.特别是当开发人员只需要处理文档中所包含的部分数据时, SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
典型的事件有:
start document, end document
start element, end element
characters
举例说明一下:
比如这样一个xml文件
<?xml version="1.0"?>
<doc>
<para>Hello, world!</para>
</doc>
SAX接口在解析的时候会依次出发一系列的事件:
start document
start element: doc
start element: para
characters: Hello, world!
end element: para
end element: doc
end document
好了,下面开始分析一下Digest类。
Digest类处理一个XML输入流,它根据一系列的嵌入的
模式匹配在parse之前加入的
rules来执行
解析工作。
Catalina 最终利用 createStartDigester方法创建一个解析Server的digester来生成一个org.apache.catalina.core.StandardServer 的实例。
分享到:
相关推荐
在Tomcat7的启动过程中,涉及到很多内部组件的初始化,其中`Digester`是一个重要的工具,用于解析XML配置文件,将XML结构映射为Java对象。本篇文章将深入剖析`Digester`的使用以及它在Tomcat7启动过程中的作用。 `...
总结来说,Tomcat 6的启动过程涉及到Bootstrap类的初始化、Catalina类的加载和配置解析,以及Digester的XML解析功能。这个过程保证了Tomcat能够正确地加载和应用配置,启动并运行Java Web应用程序。理解这一过程对于...
本文将基于提供的“tomcat启动的时序图”,详细解析Tomcat 5 的启动流程,旨在帮助读者深入理解Tomcat的工作机制。 #### 二、Tomcat 启动流程分析 ##### 1. 初始化阶段 - **Bootstrap 类**:启动过程始于`...
**问题描述**:系统环境变量配置不当导致Tomcat启动失败。 **解决方法**:检查并确认`JAVA_HOME`和`CATALINA_HOME`等环境变量是否正确配置。确保指向正确的JDK和Tomcat安装路径。 ##### 4. 多个Tomcat版本共存 **...
解析过程在`org.apache.tomcat.util.digester`包下,你可以研究这些类来理解配置的处理方式。 7. **连接器(Connector)**:Tomcat支持多种协议,如HTTP/1.1、AJP等。`Coyote`组件负责处理这些协议,其中` ...
这个类是Tomcat启动的入口点。 4. **Bootstrap类解析**: - `main`方法中,“start”关键字引导程序进入`start`方法,进而调用`load`方法。 - `load`方法通过反射机制加载`org.apache.catalina.startup.Catalina`...
2. Tomcat启动遇到的常见问题:在研究Tomcat源码的过程中,我们会遇到许多启动时常见的问题。这些问题可能包括端口被占用、配置文件错误、类加载器相关问题等。通过对这些问题的分析,我们可以更加深入地理解Tomcat...
【Tomcat源码分析_v4 完整版1】这篇文档主要探讨了Tomcat源码中的部分核心概念,包括XML解析框架Digester的工作原理及其在Java对象映射中的应用。以下是对这些知识点的详细说明: **Java对象创建与管理:** 在...
在启动过程中,Tomcat首先进行必要的初始化工作,包括建立类加载器(ClassLoader)以及构建用于解析配置文件的**Digester XML解析器**。 - **建立ClassLoader** - 类加载器由`lib`目录下的多个jar包组成。 - 主要...
6. **IDE 与 Tomcat 版本不匹配**:不同的 IDE 和 Tomcat 版本之间可能存在兼容性问题。 7. **Jar 包冲突**:在框架整合过程中,若不同库之间存在版本冲突,也可能导致问题。 8. **Jar 包缺失或版本问题**:确保所有...
2. **生命周期管理**:在Catalina模块中,容器的启动、停止、加载和卸载过程是关键。例如,`StandardServer`和`StandardService`类负责管理Tomcat服务器和服务的生命周期,而`Context`和`Host`类则处理Web应用的生命...
2. **生命周期管理**:在Catalina模块中,`Container`接口和`LifeCycle`接口代表了Tomcat中的组件和它们的生命周期方法,如`start()`、`stop()`等,这对于理解和控制服务器启动和停止过程至关重要。 3. **部署与...
其中特别需要注意的是,`commons-fileupload`, `commons-beanutils` 和 `commons-collections` 这三个包在2.1和2.0版本之间存在差异,必须正确导入对应的版本,否则可能会导致Tomcat启动时报错。 ##### 2. 配置web...