`
ftj20003
  • 浏览: 132385 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

tomcat6启动源码浅析一

    博客分类:
  • Java
阅读更多
     一直以来都是用tomcat做web服务器进行开发,很想知道其内部的一些原理和实现(虽然很多人说知道原理又不能当饭吃)。今天跟踪调试了源码的启动程序(关于源码的eclipse的导入以及ant的构建,网上有大把的资料,google一下就ok了),总算知道点大致的启动步骤,有些浅显的领悟分享一下:
org.apache.catalina.startup.Bootstrap作为启动入口,此类的main函数:
1.首先创建一个自身的实例(如果此类的实例变量:private static Bootstrap daemon为空的话);

2.然后调用init()方法,此方法的主要工作就是反射得到org.apache.catalina.startup.Catalina的实例,同时把classLoader通过Catalina的setParentClassLoader方法赋值。

3.接着调用load(args)方法,此方法反射调用Catalina的load(args),根据传递的参数设置部分属性值之后,会接着执行Catalina的load()方法。
在这个无参的方法里通过Digester组件(Jakarta Commons Digester是apache的一个解析处理xml的开源项目,开始我还以为巧合,因为struts的ActionServlet也是使用此组件解析,后来才知道tomcat的一个主力也是struts的创造者之一)解析conf/server.xml等xml文件,初始化一系列的参数。

4.接着Bootstrap的start()方法反射调用Catalina的start()方法,此方法通过调用xml解析处理后得到的server:org.apache.catalina.core.StandardServer的start()方法进入其所拥有的Lifecycle service:org.apache.catalina.core.StandardService的start()方法,接着调用Lifecycle Container:org.apache.catalina.core.StandardEngine的start()方法,初始化一堆东西之后到达旅途的终点,StandardEngine的父类:org.apache.catalina.core.ContainerBase的start(),这个方法是通过自身的threadStart()方法启动了一个容器线程:
thread = new Thread(new ContainerBackgroundProcessor(), threadName);
thread.setDaemon(true);
thread.start();

5.上面的繁文的简化大致是:Bootstrap(init,load,start)--> Catalina(start)--> StandardServer(start)--> StandardService(start)--> StandardEngine(start)--> ContainerBase(start, threadStart)

至此终于看到双击.bat或者执行.sh背后的一点点东西了(我是跟踪的6.0.20的源码,可能之前的版本的有所不同)。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    tomcat6的源码

    Apache Tomcat 6是一款广泛应用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。这个源码包,"apache-tomcat-6.0.43-src",是Tomcat 6的官方源代码,非常适合开发者进行深入学习和自定义修改。以下是...

    Tomcat6的源码

    【标题】"Tomcat6的源码"涵盖了Java Web服务器Apache Tomcat的第六个主要版本的源代码。这个版本在2005年发布,它为开发者提供了深入了解Servlet和JSP容器工作原理的机会,同时也支持Java EE 5规范。Tomcat6是开源...

    Ant编译Tomcat源码、MyEclipse导入Tomcat源码、执行Tomcat源码启动Tomcat

    MyEclipse会通过源码编译并启动Tomcat,你可以在"Console"视图中观察启动日志,确认服务器是否成功运行。 在深入研究Tomcat源码时,理解其模块结构和主要组件是非常重要的。Tomcat的主要组件包括Catalina(核心...

    tomcat6,7源码

    《深入剖析Tomcat 6与7的源码》 Tomcat作为开源的Java Servlet容器,是许多Web开发者和系统管理员的首选。它以其轻量级、高效和易于配置的特性赢得了广泛赞誉。本文将深入探讨Tomcat 6和7的源码,揭示其内部工作...

    tomcat6启动脚本

    《深入理解Tomcat6启动脚本》 在Java Web应用领域,Tomcat作为一个流行的开源Servlet容器,被广泛用于部署和管理Web应用程序。然而,要确保Tomcat顺利运行,正确理解和配置启动脚本至关重要。本文将详细解析Tomcat6...

    tomcat6源码分析

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

    Tomcat6源码下载

    《深入剖析Tomcat 6.0源码》 Tomcat,作为开源的Java Servlet容器,是许多Web开发者和系统管理员的首选。Tomcat 6.0版本是它的一个经典版本,提供了对Servlet 2.5和JSP 2.1规范的支持。本文将围绕Tomcat 6.0源码...

    tomcat7源码下载

    一、Tomcat7源码结构解析 Tomcat7的源代码结构清晰,主要包含以下几个核心模块: 1. catalina:这是Tomcat的核心模块,负责处理Servlet容器的主要功能,如Servlet和Context的生命周期管理,请求处理等。 2. ...

    Tomcat源码阅读(一)使用Idea运行Tomcat6源码

    1. 下载Tomcat源码:可以从Apache官网获取Tomcat 6的源码包,例如这里我们使用的是apache-tomcat-6.0.44-study。 2. 导入源码项目:在Idea中选择“Open”打开源码目录,Idea会自动识别为Maven项目。 3. 配置Maven...

    tomcat6源码

    《深入剖析Tomcat6源码》 Tomcat6是一款经典的开源Java Servlet容器,它作为Apache软件基金会项目的一部分,被广泛用于部署Web应用程序。本篇将深入探讨Tomcat6的源码,揭示其内部运行机制,帮助开发者理解Web...

    tomcat7源码

    《深入剖析Tomcat7源码》 Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的...

    3-6Tomcat处理源码实现与异步Servlet源码实现(1).mp4

    3-6Tomcat处理源码实现与异步Servlet源码实现(1).mp4

    tomcat8源码

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

    TOMCAT的线程池源码

    《深入解析Tomcat线程池源码》 Tomcat作为一款广泛应用的开源Servlet容器,其在性能优化上有着独到之处。...对于希望提升系统性能或对服务器优化感兴趣的开发者,Tomcat线程池源码是一个不可多得的学习资源。

    tomcat-7.0.42源码

    《深入剖析Tomcat 7.0.42源码》 Tomcat,作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)技术的流行应用服务器,广泛应用于各类Web应用的部署和开发。7.0.42版本是Tomcat发展中的一...

    MyEclipse下Tomcat_7.0.78源码,可以直接运行

    本篇文章将重点围绕"MyEclipse下Tomcat_7.0.78源码,可以直接运行"这一主题,深入探讨如何在MyEclipse集成开发环境中配置并运行Tomcat 7.0.78的源码,以及如何通过这个项目进行源码学习。 首先,Tomcat 7.0.78是...

    Tomcat6 编译好的源码

    【标题】"Tomcat6 编译好的源码"指的是Apache Tomcat服务器的第六个主要版本的源代码,已经经过编译过程,可以直接用于开发或学习。Tomcat是一款开源的Java Servlet容器,它实现了Java EE的Web应用服务规范,如...

    tomcat源码+文档pdf+源码解析

    Tomcat是Apache软件基金会下的一个开源项目,是一个广泛使用的Java Servlet容器,实现了Servlet和JavaServer Pages(JSP)规范,使开发者能够构建和部署Web应用程序。这个资源包包含了Tomcat的源码、文档以及源码...

    tomcat6开机启动

    1. 在`/etc/init.d/`目录下创建一个名为`tomcat6`的脚本,包含启动、停止、重启等函数。 2. 配置脚本,确保其执行权限正确,并设置环境变量,如JAVA_HOME和CATALINA_HOME。 3. 使用`chkconfig`(对于Red Hat/CentOS...

    tomcat 开机启动(Apache Tomcat开机后台启动_百度经验.mht)

    tomcat 开机启动,dos窗口去掉,tomcat 开机启动,dos窗口去掉

Global site tag (gtag.js) - Google Analytics