`
厨房男
  • 浏览: 4081 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java Web容器之Tomcat6.0 源码学习笔记

    博客分类:
  • Java
阅读更多
好记性不如烂笔头,把学习过的知识记下来以后参考,文笔不好,只作笔记之用,后面继续补充。


Tomcat 根据server.xml文件中的配置将Web服务器划分为以下几个组件:

StandardServer
StandardServer对象,实现Server接口,服务器启用后内存中只有一个StandardServer对象,可包含多个Service组件,由StandardServer负责启用其包含的Service组件
// 属性域
private Service services[] = new Service[0];

// Start 部分代码摘要
// Start our defined Services
synchronized (services) {
    for (int i = 0; i < services.length; i++) {
        if (services[i] instanceof Lifecycle)
            ((Lifecycle) services[i]).start();
    }
}


StandardService
根据server.xml文件配置可存在多个StandardService对象,默认只有一个。一个StandardService包含多个Connector(连接器负责监听客户端请求),包含一个Container(容器的父接口,所有容器都实现它)这里指向StandardEngine容器,StandardService启动时,先启动Container(StandardEngine),接着启动Connector。
protected Container container = null;

protected Connector connectors[] = new Connector[0];

// Start our defined Container first
if (container != null) {
    synchronized (container) {
        if (container instanceof Lifecycle) {
            ((Lifecycle) container).start();
        }
    }
}


// Start our defined Connectors second
synchronized (connectors) {
    for (int i = 0; i < connectors.length; i++) {
        if (connectors[i] instanceof Lifecycle)
            ((Lifecycle) connectors[i]).start();
    }
}

其中容器的启动是先于连接器,也就是说只有当服务器启动完准备好了,才开始接受客户端请求。

StandardEngine
负责启动其子容器StandardHost。

StandardHost
负责创建和启动其子容器StandardContext,启动时根据配置文件(HostConfig监听中处理),或部署目录,war包生成相应StandardContext对象,接着调用相应的启动方法
HostConfig中我们关心的代码
    /**
     * Deploy applications for any directories or WAR files that are found
     * in our "application root" directory.
     */
    protected void deployApps() {

        File appBase = appBase();
        File configBase = configBase();
        // Deploy XML descriptors from configBase
        deployDescriptors(configBase, configBase.list());
        // Deploy WARs, and loop if additional descriptors are found
        deployWARs(appBase, appBase.list());
        // Deploy expanded folders
        deployDirectories(appBase, appBase.list());
        
    }


context.setPath(contextPath);
context.setDocBase(file);
host.addChild(context);


StandardContext
负责创建和启动其子容器StandardWrapper,StandardContext代表一个Web应用,其启动时(ContextConfig监听)会根据web.xml文件生成相应的配置如listener或其子容器StandardWrapper,我们熟悉的一些配置也是在这时启动,如listener
// Configure and call application event listeners
if (ok) {
    if (!listenerStart()) {
        log.error( "Error listenerStart");
        ok = false;
    }
}


// Configure and call application filters
if (ok) {
    if (!filterStart()) {
        log.error( "Error filterStart");
        ok = false;
    }
}


// Load and initialize all "load on startup" servlets
if (ok) {
    loadOnStartup(findChildren());
}


StandardWrapper
容器链的终点,代表一个Servlet配置,用于处理请求。
public void addChild(Container child) {

        throw new IllegalStateException
            (sm.getString("standardWrapper.notChild"));

}

分享到:
评论

相关推荐

    web服务器tomcat6.0

    总之,Tomcat 6.0是Java Web开发的重要组成部分,它的轻量级特性、强大的功能以及广泛的社区支持使其成为开发者和企业的首选Web服务器之一。不过,需要注意的是,由于安全性问题和新特性的缺乏,Tomcat 6.0已经不再...

    tomcat6.0 适用与java web 程序的开发服务器

    《深入理解Tomcat 6.0:打造高效Java Web服务器》 Tomcat 6.0是一款广泛应用的开源Java Web服务器,由Apache软件基金会维护,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Java Web应用程序提供了一个轻...

    Apache tomcat6.0 java开发工具 Apache tomcat6.0 Apache tomcat6.0

    随着技术的发展,虽然Apache Tomcat 6.0已经过时,不再支持最新的Java版本和安全补丁,但对于学习和理解Web应用服务器的工作原理,它仍然是一个很好的起点。开发者在实际生产环境中应考虑使用更新的版本,如Tomcat 9...

    web服务器 tomcat6.0

    【描述】:“Tomcat 6.0 是一款广泛应用的开源Web服务器和Servlet容器,以其轻量级、高效和稳定性著称。它实现了Java Servlet和JavaServer Pages(JSP)技术,是Java EE应用服务器的一种实现,特别适合小型到中型的...

    tomcat6.0源码

    Tomcat 6.0是Apache软件...通过深入学习Tomcat 6.0的源码,开发者可以提升对Web服务架构的理解,这对于设计和构建高性能、高可用性的Java Web应用具有重要意义。同时,也可以帮助开发者更好地应对问题诊断和性能调优。

    Tomcat6.0——压缩包下载

    【标题】"Tomcat6.0——压缩包下载"涉及的是Apache Tomcat 6.0版本的安装和使用,这是一个开源的Java Servlet容器,广泛应用于Web应用的部署和开发。Tomcat6.0是该软件的一个重要里程碑,因为它在当时的Java EE 5...

    tomcat6.0的安装版

    总结而言,"Tomcat6.0的安装版"是提供给用户的一个包含了所有必要组件的包,使得用户能够便捷地在本地设置和运行Java Web应用程序。了解并掌握Tomcat的安装和配置对于开发者和系统管理员来说是至关重要的,因为它是...

    tomcat6.0的源代码

    《深入剖析Tomcat 6.0源代码》 Tomcat,作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)...总的来说,研究Tomcat 6.0的源代码对于任何Java Web开发者来说都是一次宝贵的自我提升之旅。

    tomcat6.0通用版本

    Tomcat 6.0是Apache软件基金会开发的一款开源的Java Servlet容器,它是基于Java的Web应用程序部署平台。这个通用版本意味着它适用于各种操作系统,并且包含了广泛支持的各种功能和配置选项,使得开发者和系统管理员...

    Tomcat 6.0 安装版

    【标题】"Tomcat 6.0 安装版"涉及的是Apache Tomcat服务器的第六个主要版本,它是一个开源的Java Servlet容器,主要用于运行Java Web应用程序。Tomcat是Java Community Process (JCP)下的一个项目,实现了Java EE中...

    apache tomcat6.0 源代码

    Apache Tomcat 6.0是Apache软件基金会的开源项目,是一个流行的Java Servlet容器,用于运行Java Web应用程序。源代码分析可以帮助我们深入理解Tomcat的工作原理,优化性能,以及进行自定义扩展。下面是关于Apache ...

    tomcat6.0应用部署服务器

    在IT领域,Tomcat6.0是一个广泛应用的开源Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)技术。Tomcat6.0是Apache软件基金会Jakarta项目的一部分,为开发者提供了运行Java web应用程序的...

    开发Java的Tomcat6.0版本的服务器

    Java的Tomcat 6.0版本是一款广泛应用的开源Web服务器和Servlet容器,它以其轻量级、高效和易于管理的特性,在Java Web开发领域占据重要地位。Tomcat是Apache软件基金会Jakarta项目的一部分,它实现了Java Servlet和...

    tomcat6.0源码,可直接导入eclipse运行

    Apache Tomcat 6.0是开源的Java Servlet和JavaServer Pages(JSP)容器,它遵循Java EE Web Profile规范。这个源码版本6.0.53提供了对Tomcat内部工作原理的深入理解,这对于开发者来说是极其宝贵的资源。源码可以...

    tomcat6.0是一款免费开源的jsp服务器

    Tomcat6.0,作为Apache软件基金会的旗下面向Java的Web应用服务器,以其免费开源的特性,深受开发者们的喜爱。它不仅是一个小巧而高效的JSP服务器,还包含了完整的HTTP服务器功能,可以作为一个独立的Web服务器运行。...

    tomcat6.0容器

    Apache Tomcat 6.0是一款经典的Java Web应用服务器,它是一个开源软件,广泛应用于开发和部署JSP、Servlet等Web应用程序。Tomcat是Java Servlet和JavaServer Pages(JSP)技术的标准实现,由Apache软件基金会的...

    Tomcat6.0.rar

    标题“Tomcat6.0.rar”表明这是一份包含Tomcat 6.0版本的压缩文件,用于在用户的计算机上安装和运行这个流行的Java Servlet容器。Tomcat是Apache软件基金会的项目之一,它是一个开源的Web服务器和应用服务器,特别...

    Tomcat5.0和Tomcat6.0

    Tomcat5.0和Tomcat6.0都是重要的Java Web服务器版本,它们在提升性能、安全性、易用性和可扩展性方面做出了巨大贡献。Tomcat6.0相对于5.0,进一步增强了对新规范的支持,优化了服务器管理和部署体验,使得开发者能够...

    解压版tomcat6.0

    总结来说,"解压版Tomcat6.0"是一个轻量级的Java Web服务器,提供了一个简单易用的部署方式,可以在单个机器上运行多个实例,并且遵循Java EE 5规范,具备良好的性能、安全性和可管理性。通过解压缩提供的文件,用户...

    tomcat6.0(资源分享)

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

Global site tag (gtag.js) - Google Analytics