关闭

Tomcat源码分析-JMX(终)

背景前几节分析了Tomcat中跟JMX有关的内容,昨天继续分析了JMX的架构图,以及JVM启动JMX的流程,整理出JDK中相关的类图,以巩固对JMX的理解。架构图sun公司定义的JMX架构图,百来的图片如下:纵观上图,以虚线分割,分为三层: 第一层,远程管理层应用,即访问JMX的应用,如jconsole.exe,snmp等。 第二层,JMX代理层,核心层,它是连接第一层和第三层的枢纽。...
阅读(1262) 评论(0)

Tomcat源码分析-JMX(下)

背景上一节分析了Registry类的功能,其引用management包中所有的类,也就是JDK支持JMX功能的类,本节将继续分析类图的其他部分。类图分析JMX的类图截取如下:分析类图得到几点信息如下: 第一,JmxBeanServer和DefaultMBeanServerInterceptor类,它们都是MBeanServer接口的实现类,即它们都是MBeanServer类型。Tomcat中引用是...
阅读(1147) 评论(2)

Tomcat源码分析-JMX之Registry类(中)

背景“Tomcat源码分析-StandardServer类”,这一篇文章的分析中,我们知道StandardServer类的实例被注册到JMX的服务器的过程,是通过Tomcat定义的Registry类完成的,那么这个类又是如何完成JMX相关功能的呢,本文就记录一下本人在源码跟踪过程中的分析结果。流程回顾从StandardServer类的initInternal中跟踪到,注册流程最终是通过Lifecyc...
阅读(821) 评论(0)

Tomcat源码分析-JMX(上)

背景从LifecycleMBeanBase 类分析那一篇文章中,我们已经知道 Tomcat的所有的组件都实现了JmxEnable接口,并且在初始化过程中通过Registry类注册成为Java Managed Bean 了。那么JMX在Tomcat是的运用原理是什么呢?今天就这个问题进行了实践和探究,记录一下流程。JMX基本概念首先,我们来看一下sun公司的官方定义 JMX(Java Manag...
阅读(331) 评论(0)

Tomcat源码分析-catalina.home和catalina.base

背景Bootstrap启动的时候使用了两个系统变量catalina.home和catalina.base,从官网和源码中的注释可以知道这两者的区别主要是:catalina.home是Tomcat产品的安装目录,而catalina.base是tomcat启动过程中需要读取的各种配置及日志的根目录。默认情况下catalina.base是和catalina.home是相同的,本章就为了解决本人看到这两个东...
阅读(1421) 评论(0)

Tomcat源码分析-StandardServer类

类概况StandardServer类是Tomcat初始化流程中的第一个组件,本章需要结合“Tomcat源码分析-初始化流程” 的时序图继续看。时序图中Catalina类调用了StandardServer类的init方法,而这个模版方法是调用子类的initInternal类的,所以该类着重关注这个方法即可。类图绘制如下:主要流程初始化流程主要通过该类的initInternal方法完成的,而它的star...
阅读(496) 评论(0)

Tomcat源码分析-LifecycleMBeanBase

类概况关注这个类是因为上一回跟踪了AccessLogValve类,它是LifecycleMBeanBase的一个子类,搞清楚这个类的各个子类结构,也就理顺了Tomcat容器中各个组件的协助流程了。管中窥豹,还是先从这个顶层抽象类开始吧。 这个类的结构很简单,类图绘制如下:父类LifecycleBase Base implementation of the Lifecycle interfac...
阅读(433) 评论(0)

Tomcat源码分析-AccessLogValve类

类概况Tomcat的server.xml中,Host节点的子元素名称是Valve,用来定义一系列的处理器,AccessLogValve就是用来记录容器访问请求的日志处理类。Valve,本意是阀门的意思,AccessLogValve是处理生成访问日志的,梳理它的类图如下: 它的所有的成员变量大多都跟日志文件写入操作有关。使用方法tomcate的默认配置为: <Valve className="org...
阅读(1155) 评论(0)

Tomcat源码分析-Java原生态log运用

背景调试tomcat源码过程中,控制台日志打印的都是INFO级别的日志,于是就想修改下日志级别,打印Digester类的DEBUG级别的日志,便于观察Digester类解析server.xml的流程,顺便跟踪了一下tomcat使用日志的流程,整理如下。使用方法Java提供了原生态的日志工具包java.util.logging,功能虽然没有log4j强大,但是够用了,我想这也是tomcat使用原生日志...
阅读(392) 评论(0)

Tomcat源码分析-初始化流程

主要类图Tomcat的Bootstrap类关联的几个主要类整理如下:初始化入口类是Catalina,它的load()完成初始化所有类的过程,主类StandardServer类有两个父类,它提供了生命周期的管理方法,同时也具有ManagedBean的功能。 进一步分析得到初始化过程中的时序图。初始化时序图 start方法包括两个步骤,load和start。load操作最终转换为Catalina类的...
阅读(430) 评论(0)

Tomcat源码分析-CatalinaProperties类

功能这个类很简单,就是一个属性获取的公共类。但是用法却很巧妙,代码相当优雅,所以忍不住想要再说说这个类。它的功能是管理catalina.properties类文件中的配置属性获取,只有一个方法getPropertity(String name).代码结构类图和流程图如下:代码启示录我认为这个类的高明之处就是充分使用了配置属性,配置文件路径可配置,即流程图的第一个操作,是从环境变量中获取的配置文件路径...
阅读(305) 评论(0)

Tomcat源码分析-Bootstrap类

背景本人真正从事Java开发工作已经五年了,最近一直在思考五年的工作经历,技术应该达到一个什么样的水平的呢。运用SWOT方法,剖析了一下自己目前的现状: 1 能快速熟悉一个项目,厘清项目框架、主要功能模块,找到值得学习的设计思想,发现明显的设计缺陷。 2 有代码洁癖,看到烂代码就有重构的冲动,深受代码重构、代码简洁之道等Java经典著作的毒,写代码的时候简直会有“我是作家,我的代码我做主”...
阅读(332) 评论(0)