`
youyun_2008
  • 浏览: 112197 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

学习tomcat 小记(9)

阅读更多
1. Digester
将所有的配置都写到代码里很不利于使用和扩展。tomcat中使用xml文件(如server.xml)来记录系统配置。例如,server.xml中,一个Context标签表示一个context容器。设置path和docPath属性可以使用下面的配置:
<context docBase="myApp" path="/myApp"/>

tomcat使用了开源库Digester将xml文件中的元素转换为java对象。

Digester是apache commons下的一个子项目,包含下面三个包:
(1)org.apache.commons.digester:该包可用于处理xml文件;
(2)org.apache.commons.digester.rss:可用于解析rss;
(3)org.apache.commons.digester.xmlrules:该包提供了基于xml的定义。


2. Shutdown Hook
在很多实际应用环境中,当管理员关闭了你的应用程序时,你需要做一些善后清理工作。但问题,管理员才不管你那一套,很有可能不给你做清理工作。例如,在tomcat的部署应用中,通过实例化一个server对象来启动servlet容器,调用其start方法,然后逐个调用组件的start方法。正常情况下,为了关闭这些已经启动的组件,你应该发送关闭命令(如14章所述)。
tomcat中提供了hook,可以在关闭过程中运行一些代码,执行清理的工作。在java中,有两种事件会关闭虚拟机:
(1)当调用System.exit()方法或程序的最后一条代码执行完毕时,程序正常退出;
(2)用户键入ctrl+c或在未关闭java程序的情况下,退出系统,会导致jvm强制关闭。

在关闭jvm时,虚拟机会经过以下两个阶段:
(1)虚拟机启动所有已经注册的shutdown hook。shutdown hook是先前已经注册到Runtime中的线程,所有的shutdown hook会并发执行,直到完成任务;
(2)虚拟机调用所有没有被调用过多析构方法。

tomcat中的shutdown hook
org.apache.catalina.startup.Catalina类中,你可以找到shutdown hook。CatalinaShutdownHook类继承自java.lang.Thread,实现了run方法,该方法中会调用server的stop方法。

3.启动tomcat
tomcat启动的过程,使用了两个类,Catalina和Bootstrap,均在org.apache.catalina.startup包下。Catalina类用于启动关闭server对象,并对server.xml文件进行解析。Bootstrap类创建Catalina的实例,并调用其process方法。

Catalina类
org.apache.catalina.startup.Catalina类是启动类。它包含了一个Digester对象用于解析server.xml文件。Catalina类中还有一个server对象(server中包含有service),正如15章所述,service对象中有一个container和一个或多个的connector。

Bootstrap类
org.apache.catalina.startup.Bootstrap类提供了启动tomcat的切入点(还有一些其他的类也有此功能)。当使用bat或sh启动tomcat时,实际上会调用该类的main方法。在main方法中会创建三个loader,并实例化Catalina对象,然后调用Catalina对象的process方法。

4. Manager Servlet
tomcat4和5中使用manager应用可以方便的部署web应用程序。但是,manager应用并不在%CATALINA_HOME%/webapps目录下,而在%CATALINA_HOME%/server/webapps目录下。当tomcat启动时,会安装manager应用,因为manager应用有一个描述符文件,manager.xml。

5.基于JMX的管理
既然ContainerServlet已经可以管理tomcat,为啥要用jmx?因为jmx更灵活。许多基于服务器的应用程序,如tomcat,jboss,jonas,geromino等,使用jmx管理其资源。
jmx规范(书中指规范1.2.1版本)定义了管理java对象的公开标准。例如,tomcat4和5使用jmx来启动servlet容器中的各种对象(如server,host,context,valve等),这样更灵活,更易于管理。tomcat的开发者也编写了admin应用来管理其他web应用。
由基于jmx的管理应用程序管理的java对象成为jmx托管资源。事实上,一个jmx托管资源也可以是一个应用程序,一个service实现,一个设备,一个用户等等。jmx托管资源由java编写,提供了相应的包装。
要想将一个java对象转换为jmx托管资源,你需要另外创建一个名为MBean的对象。org.apache.catalina.mbeans包下,包含有一些MBean,例如,ConnectorMBean,StandardEngineMBean,StandardHostMBean,StandardContextMBean。由名字可猜想,ConnectorMBean用于管理connector,StandardContextMBean用于管理org.apache.catalina.core.StandardContext实例。你也可以编写自己的MBean管理你自己的java对象。
MBean类暴露出了它所管理的java对象的属性和方法。管理应用程序本身并不直接访问它所管理的java对象,因此,你可以选择性的暴露出需要的属性和方法。
拥有的MBean类后,你将它实例化,并将其注册到MBean服务器中。MBean服务器是一个应用中所有MBean注册的中心地。管理应用程序通过MBean服务器访问MBean。


分享到:
评论

相关推荐

    tomcat7tomcat8tomcat9

    在这个压缩包中,包含了Tomcat的三个不同版本:Tomcat 7、Tomcat 8和Tomcat 9,这些都是免安装版本,方便用户直接解压使用。 Tomcat 7是2011年发布的版本,它支持Servlet 3.0、JSP 2.2和EL 2.2规范。这个版本对并发...

    tomcat7,tomcat8,tomcat9

    Tomcat7、Tomcat8和Tomcat9是不同版本的Tomcat,每个版本都有其特性和改进。 **Tomcat7**: Tomcat7是2011年发布的,它主要支持Java Servlet 3.0和JSP 2.2规范。这个版本引入了一些重要改进,包括增强的安全性、更...

    Tomcat9 64位

    【标题】:“Tomcat9 64位” 【正文】: Tomcat9是Apache Tomcat服务器的一个重要版本,尤其在64位操作系统环境下,它能够充分利用系统资源,提供更高效的服务。Apache Tomcat是一个开放源代码的Java Servlet容器,...

    windows下部署tomcat项目小记

    在Windows环境下部署Apache Tomcat服务器是一项常见的任务,尤其对于开发和测试环境来说。在这个过程中,可能会遇到各种问题,本文将详细解析如何在Windows系统中部署Tomcat项目,并着重解决两个常见问题:数据库不...

    tomcat9 源码学习

    以下是一些在学习Tomcat9源码时会涉及的关键知识点: 1. **架构概述**:Tomcat由多个组件构成,如Catalina(核心Servlet容器)、 Coyote(HTTP/HTTPS连接器)、 Jasper(JSP引擎)、Juli(日志框架)等。理解这些...

    Tomcat学习总结.zip

    《Tomcat学习总结》 Tomcat,作为Java Web应用程序的开源服务器,是Apache软件基金会Jakarta项目的一个核心组件。在本文中,我们将深入探讨Tomcat 8.5版本的学习要点,包括其工作原理、配置与优化,以及在实际开发...

    tomcat 7到9 版本

    这里提到的资源包含了Tomcat 7、8、8.5和9四个主要版本,这些版本都是为Java Web开发者准备的,特别是针对Eclipse集成开发环境的使用者。 Tomcat 7是Apache Tomcat的一个重要版本,它支持Java EE 6规范,包括...

    Tomcat学习资料1

    【标题】:“Tomcat学习资料1”所涵盖的知识点包括了Tomcat服务器的使用、配置以及Web项目的部署。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,是一款开源的Java Servlet容器,广泛用于搭建Java Web...

    Tomcat8(Tomcat9)+redis实现Session共享(支持Redis集群)

    本教程将详细介绍如何利用Tomcat 8或9以及Redis实现Session共享,支持Redis集群,以提高系统的可伸缩性和数据一致性。 首先,我们需要理解Session的概念。Session是服务器端用于存储用户状态的一种机制,通常在用户...

    最新tomcat8,tomcat9全下载

    标题中的“最新tomcat8,tomcat9全下载”指的是Tomcat服务器的最新版本8.5.31和9.0.8的Windows 64位版本。Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java EE的Web部分,包括Servlet、JSP和JavaServer ...

    tomcat官网版本Tomcat+Java学习资源

    【标题】:“Tomcat官网版本Tomcat+Java学习资源”是一个综合的学习资料包,主要针对的是Java开发中的关键工具——Apache Tomcat服务器以及相关的Java技术。Apache Tomcat是一款开源的Servlet容器,它实现了Java ...

    Tomcat源码学习:一个最简单的“Tomcat”

    【标题】"Tomcat源码学习:一个最简单的‘Tomcat’",这篇博客主要探讨的是如何通过学习Tomcat的源代码来理解这个流行的开源Java Servlet容器的工作原理。Tomcat是Apache软件基金会的一个项目,它是Java Web应用...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    总之,学习Tomcat源码不仅能够提升你对Web服务器底层工作的理解,还能够提高你在Java Web开发中的问题排查能力,让你成为一名更出色的开发者。通过阅读《How Tomcat Works》并结合实际项目实践,你将能够逐步揭开...

    tomcat9的安装包

    Apache Tomcat 9.0.80.exe 是一个用于安装 Apache Tomcat 9.0.80 版本的 Windows 可执行文件。它提供了 Java Servlet 容器和 HTTP Web 服务器环境,支持 Java EE 规范中的 Web 组件,并且拥有高性能、模块化设计、...

    Tomcat-9-资源.zip

    1. **Tomcat9的安装包**:这是用于在用户计算机上部署和运行Tomcat服务器的文件集合,通常包括可执行文件、配置文件、库文件等。安装过程可能包括设置环境变量、配置服务器端口和管理服务启动与停止等步骤。 2. **...

    tomcat源码学习之环境搭建

    9. **日志系统**:Tomcat使用`org.apache.juli`包实现日志记录。理解如何自定义日志配置,以及如何使用JULI(Java Util Logging)与其他日志框架集成。 10. **扩展性**:Tomcat允许自定义插件和过滤器,实现特定的...

    tomcat学习资料整理(不断更新)

    【标题】"Tomcat学习资料整理(不断更新)"揭示了这个压缩包文件是关于Tomcat服务器的深入学习资源,特别是关注其源码和使用的工具。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它是一个开源的、免费的...

    下载Tomcat9安装包

    【标题】: "下载Tomcat9安装包" 在IT行业中,Tomcat是一个广泛使用的开源软件,它是一个符合Java Servlet和JavaServer Pages(JSP)规范的Web应用服务器,由Apache软件基金会开发。Tomcat9是该系列的一个较新版本,...

    apache-tomcat 6到9的4个版本,Tomcat 6.zip Tomcat 7.zip Tomcat 8.zip Tomcat 9.zip

    Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为 Web服务器的一些特有功能,如Tomcat管理...

Global site tag (gtag.js) - Google Analytics