最近在学习Tomcat的源码,在catalina. createStartDigester方法中,Tomcat开发人员采用了Digester来读取conf/server.xml文件,以前读取xml文件一般采用Dom4j和SAX。由于对Digester比较陌生,所以今天抽时间研究了一下Digester是如何解析xml文件的。先简单阐述下Dom4j和SAX解析XML的却别:
Dom4j是把一个xml文件全部读取到内存中,构建成一个DOM树来解析,所以Dom4j适合读取比较小的xml文件。
SAX是基于文件流来解析xml文件的,在读取xml文件流时,SAX会通过节点来触发相应的操作,也可以说SAX是基于文件流的事情触发机制来解析xml文件的。
Digeter是apache的common项目,作用是将XML转化成对象,使用者直接从对象中获取xml的节点信息。Digester是对SAX的包装,它也是基于文件流来解析xml文件,只不过这些解析操作对用户是透明的。Tomcat的配置文件conf/server.xml就是用Digester来读取的。
一、 下载Digester的jar
(1) Digester的jar下载地址(版本:2.0)
http://commons.apache.org/digester/
(2) Digester依赖的Logging的jar下载地址(版本:1.1.1)
http://commons.apache.org/logging/
(3) Digester依赖的BeanUtils的jar下载地址(版本:1.8.3)
http://commons.apache.org/beanutils/
二、 关键方法说明
(1) serverDigester.addObjectCreate("Server","com.test.server.digester.Server")
当解析xml文件时,遇到“Server”就初始化一个“com.test.server.digester.Server”对象,并且把该对象压入栈顶
(2) serverDigester.addSetProperties("Server", "port", "port")
给Server对象注册port属性,当解析到Server节点的port属性时调用Server的setPort方法
(3) serverDigester.addSetNext("Server/Listener", "addListener","com.test.server.digester.Listener")
当解析Server节点下的Listener节点的时候,调用Server对象的addListener方法,把当前Listener对象写入到Server对象中。无论Server节点下有多少个Listener节点,都会调用addListener方法
(4) serverDigester.addCallMethod("Server/Service/Engine", "setEngine", 0)
Service中添加Engine,调用当前top object的setEngine函数,参数个数为0
addCallMethod与addBeanPropertySetter方法等价
三、 注意事项
Xml中定义的属性要与对象中set和get方法一致,比如xml中定义了一个节点属性“engineType”,那么在java对象的set方法必须为setEngineType,除了首字母外,其他字母必须一致,不然在解析的时候会解析不到对应的属性值。不知道是否还有其他规则,没有摸清楚。
分享到:
相关推荐
- 通过调整 `conf/catalina.properties` 和 `conf/server.xml` 中的配置,可以优化JVM参数,提升性能。 9. **故障排查**: - 当遇到问题时,查看 `logs/catalina.out` 文件可以帮助定位错误。 - 使用 `jstack` ...
7. **JNDI资源**:Tomcat支持JNDI(Java Naming and Directory Interface),允许在`conf/server.xml`中的`<GlobalNamingResources>`元素内定义数据库连接池和其他资源。 8. **性能优化**:Tomcat可以通过调整...
Tomcat 配置文件 web.xml 与 server.xml 解析 Tomcat 配置文件 web.xml 和 server.xml 是 Tomcat 自身的配置文件,用于配置 Tomcat 服务器的行为和性能。在本文中,我们将对 web.xml 和 server.xml 中的主要配置项...
在`conf/server.xml`文件中,你可以配置Tomcat的各种设置,如端口号、连接器、虚拟主机等。例如,修改`<Connector>`元素来改变HTTP/HTTPS端口。同时,可以通过`webapps`目录下创建应用的WAR文件或目录来部署Web应用...
2. 需要在`conf/context.xml`或应用的WEB-INF/web.xml中引用该数据源。 八、安全配置 1. 配置用户和角色:在`conf/tomcat-users.xml`中定义用户、角色及其权限。 2. 安全拦截:在`conf/web.xml`中设置Security...
这两个应用默认是禁用的,可以在`conf/tomcat-users.xml`中添加用户并修改`conf/server.xml`相应部分以启用。 总的来说,Apache Tomcat 8是一个强大且灵活的Java Web服务器,是开发和部署Java应用的理想选择。通过...
Linux tomcat下catalina.out日志文件分割 前言: tomcat默认使用Java.util.logging记录日志,默认只记录tomcat的日志,不记录应用的日志。tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli...
默认情况下,Tomcat提供了一个org.apache.catalina.Server接口的实现,通常用户不需要对其进行自定义。Server管理Service、Listener以及其他系统级别的配置。 2. **Service** - Service组件存在于Server内,负责将...
7. **性能优化**:通过调整`conf/server.xml`中的`<Connector>`元素参数,如`maxThreads`、`minSpareThreads`等,可以优化Tomcat处理请求的能力。 8. **JVM内存配置**:对于性能要求较高的应用,可能需要调整JVM的...
通过`conf/tomcat-users.xml`定义用户角色和权限,`conf/server.xml`中的`Realm`元素进行认证设置,`conf/context.xml`或`WEB-INF/web.xml`用于应用级别的访问控制。 七、性能优化 优化Tomcat主要包括调整JVM参数、...
- 在`conf/server.xml`或`context.xml`中定义数据源(DataSource)或其他JNDI资源,以供应用使用。 8. **连接器与协议**: - `conf/server.xml`中的`Connector`元素配置了Tomcat如何与客户端通信,可以选择不同的...
这些通常需要修改`bin/catalina.sh`或`conf/server.xml`。 9. **监控与管理**:可以使用JMX(Java Management Extensions)来远程监控和管理Tomcat,或者利用内置的JMX代理`jmxremote`进行监控。 10. **版本兼容性...
《深入解析Tomcat的server.xml文件》 在Java Web开发中,Tomcat作为一个广泛应用的开源Servlet容器,扮演着至关重要的角色。它的配置核心在于`server.xml`文件,这是Tomcat服务器的主要配置文件,包含了服务器的...
默认情况下,Tomcat的主要日志输出文件是`catalina.out`,它记录了服务器启动、运行和关闭过程中的所有标准输出和错误信息。然而,随着服务器运行时间的增长,`catalina.out`可能会变得非常大,导致日志查找和分析变...
9. **热部署**:通过修改`conf/catalina.properties`文件启用`reloadable`属性,可以让Tomcat在不重启的情况下重新加载修改后的Web应用。 10. **集群与负载均衡**:Tomcat 6.0支持集群配置,通过复制会话和故障转移...
可以通过调整`conf/catalina.properties`、`conf/server.xml`和`conf/web.xml`中的参数来优化Tomcat性能,例如增大线程池大小、增加连接器的超时时间等。 9. **防火墙配置**: 如果服务器有防火墙,需要配置规则...
2. **设置RMI安全**:默认情况下,JMX远程访问是不安全的,需要在`$CATALINA_BASE/conf/server.xml`中配置RMIServerSocketFactory,以限制访问权限。可以使用SSL加密,或者在JMX连接器上设置特定的认证和授权策略。 ...
- Tomcat的日志文件通常位于`logs`目录下,包括`catalina.out`和各个日期命名的日志文件。 - 可以通过修改`logging.properties`配置文件来调整日志级别和输出位置。 4. **安全性**: - 配置`conf/tomcat-users....
如果应用需要数据库连接池,可以在`conf/server.xml`的`<GlobalNamingResources>`中配置JNDI数据源。 7. **错误页面和欢迎文件** 在`conf/web.xml`中配置错误页面和默认欢迎文件,可以定制用户看到的错误信息和...
- `conf`: 存放Tomcat的配置文件,如`server.xml`、`web.xml`等。 - `lib`: 存放Tomcat运行时需要的JAR文件。 - `webapps`: 默认的应用部署目录,将WAR文件或已展开的Web应用文件夹放入此目录即可自动部署。 - `...