`
shenkun_918
  • 浏览: 27443 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

tomcat源码分析一

阅读更多

         IBM开发者上面有淘宝架构师写的文章《Tomcat 系统架构与设计模式》(http://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/)。结合这2 篇文章的分析,对tomcat对设计模式的使用对原代码进行了分析。
       首先看下“门面模式”,首先看下门面模式的介绍:[size=10.5pt; font-family: 宋体;]一个大系统会有很多小系统,每个小系统之间又会有通信。为了保护每个小系统内部的数据,可以为每个小系统设计一个门面,把系统间通信的数据封装起来,提供给其他系统调用。这样的做法,简化层于层的依赖关系,提高子系统的独立性和可移植性。在阎宏的《设计与模式》中比将门面模式比做,医院的每一个科室,有挂号,门诊,从现实社会的角度对门面模式进行了阐述。

         接下来结合源代码,来看下门面模式在tomcat中的应用。

 uml

        org.apache.catalina.core.StandardWrapperFacade封装了获取Servlet的信息,对外提供信息。用户就不用访问StandardWrapper来获取信息。结合上面的类图,看下StandardWrapperFacade的代码就会很明白门面模式在此处的运用了。

      

private ServletConfig config = null;//此处私有,用于保护子系统信息
//构造器,初始化
public StandardWrapperFacade(StandardWrapper config) {
        super();
        this.config = (ServletConfig) config;
}
//以下是所有获取信息的方法,是从StandardWrapper 类中获取信息
public String getServletName() {
        return config.getServletName();
}
public ServletContext getServletContext() {
        if (context == null) {
            context = config.getServletContext();
            if ((context != null) && (context instanceof ApplicationContext))
                context = ((ApplicationContext) context).getFacade();
        }
        return (context);
    }
  public String getInitParameter(String name) {
        return config.getInitParameter(name);
    }


    public Enumeration getInitParameterNames() {
        return config.getInitParameterNames();
    }

    同时,我们也可以看到其他代码也用到了门面模式。tomcat源代码中有很好的命名习惯,就是对于门面模式使用的类都用Facade(表面,假象,外观)。其中对于Request和Response都有相应的RequestFacade和ResponseFacade。

分享到:
评论

相关推荐

    Tomcat源码分析1

    《Tomcat源码分析1——服务启动与架构详解》 Tomcat,作为一款广泛应用的开源Java Servlet容器,其内部架构和启动流程对于深入理解和优化Web应用程序至关重要。本文将重点解析Tomcat启动时的关键步骤和核心组件,...

    tomcat源码分析1

    《深入理解Tomcat源码分析1:Connector配置详解》 Tomcat,作为广泛使用的Java Servlet容器,其核心组件之一就是Connector,它负责处理Web服务器与客户端之间的通信。本篇文章将详细探讨Tomcat Connector的种类、...

    tomcat 源码分析系列文档

    7. "tomcat源码分析之一架构.pdf":可能涵盖了Tomcat的整体架构,包括Catalina、 Coyote、Jasper等主要模块的功能和相互关系。 8. "HTTP协议详解.pdf":作为基础,此文档提供了HTTP协议的详细讲解,帮助读者理解...

    tomcat6源码分析

    《Tomcat6源码分析——深入理解Web服务器的运行机制》 Tomcat6作为Apache软件基金会的Jakarta项目的一部分,是一款广泛使用的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为开发和部署...

    tomcat架构的源码分析

    ### Tomcat架构的源码分析 #### 一、Tomcat的架构概述 Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。...

    TOMCAT源码分析(启动框架)

    【TOMCAT源码分析(启动框架)】 Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了运行环境。本篇文章将深入探讨Tomcat的系统框架及其启动流程...

    「Tomcat源码剖析」.pdf

    Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...

    tomcat源码分析图谱

    tomcat的基础脚本分析 tomcat的源码启动分析 tomcat的web应用启动分析 tomcat的socket分析 tomcat的cocket与容器对接时序分析

    tomcat源码

    Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...

    tomcat源码基于6.0

    二、Tomcat源码分析 1. **启动流程**:从`bin/catalina.sh`或`bin/catalina.bat`开始,通过`org.apache.catalina.startup.Bootstrap`启动Catalina,加载配置文件,初始化服务器,最后启动主循环监听端口。 2. **...

    Tomcat源码分析

    【标题】"Tomcat源码分析" 在深入探讨Tomcat源码之前,首先需要了解Tomcat是什么。Tomcat是一款开源的、基于Java的Web应用服务器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,...

    tomcat 最全源码分析

    对 NIO 模式,请求的流程描述的很详细。值得去仔细的研究。

    tomcat源码依赖包

    本文将详细探讨“tomcat源码依赖包”这一主题,旨在帮助读者更好地理解和构建Tomcat6及其之前版本的源代码。 首先,我们来谈谈“jar”标签。在Java开发中,jar(Java Archive)文件是一种打包格式,它将类文件、...

    tomcat8源码

    Apache Tomcat 8.5.23 源码分析 Apache Tomcat 是一个开源的、免费的Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是开发和部署Java Web应用的重要平台。深入理解Tomcat的源码有助...

Global site tag (gtag.js) - Google Analytics