`
22cgreen
  • 浏览: 55185 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

tomcat(3)之StandardServer.java

阅读更多
StandarServer.java 所在包package org.apache.catalina.core;
public final class StandardServer
    implements Lifecycle, Server, MBeanRegistration
    从上节分析可以看到,Catalina.java主要执行了。
    server.initialize();
    server.start();
    我们来看看
    server.initialize();主要做了什么.
    -----------------------------------------------------------------
    /**
     * Invoke a pre-startup initialization. This is used to allow connectors
     * to bind to restricted ports under Unix operating environments.
     */
    public void initialize()
        throws LifecycleException
    {
        if (initialized) {
                log.info(sm.getString("standardServer.initialize.initialized"));
            return;
        }
        lifecycle.fireLifecycleEvent(INIT_EVENT, null);
        initialized = true;

        if( oname==null ) {
            try {
                oname=new ObjectName( "Catalina:type=Server");
                Registry.getRegistry(null, null)
                    .registerComponent(this, oname, null );
            } catch (Exception e) {
                log.error("Error registering ",e);
            }
        }
       
        // Register global String cache
        try {
            ObjectName oname2 =
                new ObjectName(oname.getDomain() + ":type=StringCache");
            Registry.getRegistry(null, null)
                .registerComponent(new StringCache(), oname2, null );
        } catch (Exception e) {
            log.error("Error registering ",e);
        }

        // Initialize our defined Services
        for (int i = 0; i < services.length; i++) {
            services[i].initialize();
        }
    }
   
    注:从源码分析,初始化过程,也就是设置一些属性.
   
   
   
    我们再来看看.
    server.start();
    -----------------------------------------------------------------
      /**
     * Prepare for the beginning of active use of the public methods of this
     * component.  This method should be called before any of the public
     * methods of this component are utilized.  It should also send a
     * LifecycleEvent of type START_EVENT to any registered listeners.
     *
     * @exception LifecycleException if this component detects a fatal error
     *  that prevents this component from being used
     */
    public void start() throws LifecycleException {

        // Validate and update our current component state
        if (started) {
            log.debug(sm.getString("standardServer.start.started"));
            return;
        }

        // Notify our interested LifecycleListeners
        //通知我们相关的生命周期事件监听器,在启动前
        lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);
        //通知我们相关的生命周期事件监听器,在启动中
        lifecycle.fireLifecycleEvent(START_EVENT, null);
        started = true;

        // Start our defined Services
        //开始启动我们定义的服务器。
        synchronized (services) {
            for (int i = 0; i < services.length; i++) {
                if (services[i] instanceof Lifecycle)
                    ((Lifecycle) services[i]).start(); //启其它服务哭。
            }
        }

        // Notify our interested LifecycleListeners
        //通知我们相关的生命周期事件监听器,在启动后
        lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);

    }
   
    注:
    1)如果已初始化,将生成日志,说明服务已初始化.
    2)通知我们相关的生命周期事件监听器,在启动前
    3)通知我们相关的生命周期事件监听器,在启动中
    4)启动其它服务器.
    5)通知我们相关的生命周期事件监听器,在启动后
    从上面代码来看,就是在服务器启动前中后,发送消息给管理生命周期的事件监听器,因此这里关键的问题应是监听器做了什么了.
   
    这里LifecycleListener是一个接口,目前所知道实现类为:
    public class AprLifecycleListener
    implements LifecycleListener {
   
    位于包:org.apache.catalina.core
    如此可以看tomcat的一些核心代码在org.apache.catalina.core,
    而org.apache.catalina多是一些接口.
分享到:
评论

相关推荐

    apache-tomcat-9.0.54-embed.tar.gz

    Apache Tomcat 9.0.54 是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。这个压缩包文件 "apache-tomcat-9.0.54-embed.tar.gz" 包含了可嵌入式的Tomcat版本,这意味着它可以在不依赖独立服务器的...

    struts2驱动包

    信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_10\bin;C:\Program ...

    tomcat-server.xml详解

    Tomcat作为一款广泛应用的Java EE服务器,其核心配置文件`tomcat-server.xml`对于优化服务器性能、管理和监控服务至关重要。本文将详细解析`tomcat-server.xml`中的主要元素和属性,帮助读者深入理解Tomcat的内部...

    apache-tomcat-9.0.0.M1-src

    - Tomcat的启动过程涉及到Catalina、StandardServer、StandardService等关键组件。这些组件遵循Java的生命周期管理,如初始化、启动、停止和销毁等阶段。 - “conf”目录下的server.xml文件是Tomcat的主要配置文件...

    apache-tomcat-8.5.100-src Tomcat源码解析

    Apache Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java EE Web应用服务器的Servlet和JSP规范。本资源是Apache Tomcat 8.5.100版本的源代码,对于理解Tomcat的工作原理、进行定制化开发或者优化性能具有...

    Java详解Tomcat 的设计模式分析.doc

    Java中的Tomcat是一个广泛应用的开源Web服务器和Servlet容器,其设计模式的巧妙运用对于理解和优化软件架构至关重要。本文主要分析了Tomcat中两种主要的设计模式:门面模式和观察者模式。 1. 门面(Facade)设计...

    Tomcat8源代码

    它的主要类包括`org.apache.catalina.core.StandardServer`、`org.apache.catalina.core.StandardService`、`org.apache.catalina.core.StandardEngine`和`org.apache.catalina.core.StandardHost`,这些类构成了...

    tomcat server.xml配置说明

    * className:指定实现 org.apache.catalina.Server 接口的类,默认值为 org.apache.catalina.core.StandardServer。 * port:指定 Tomcat 监听 shutdown 命令端口,必须设置该属性。 * shutdown:指定终止 Tomcat ...

    tomcat 6 源码

    Apache Tomcat 6是一款广泛应用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析有助于深入理解其工作原理,提高开发和调试Web应用的能力。在这个压缩包中,你将找到Apache Tomcat 6.0.32...

    手写嵌入式Tomcat

    2. **创建Server**:通过`org.apache.catalina.core.StandardServer`类创建服务器实例,这是Tomcat的顶级容器。 3. **创建Service**:使用`org.apache.catalina.Service`接口创建服务,服务通常包含一个或多个...

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

    Tomcat是一款开源的Java Servlet容器,由Apache软件基金会开发,它实现了Java EE中的Web应用服务器部分,特别是Servlet和JavaServer Pages (JSP)规范。《How Tomcat Works》是一本经典的书籍,详细解释了Tomcat的...

    apache-tomcat-7.0.57-src可导入Myeclipse

    Apache Tomcat 7.0.57 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本的源代码包(src)是为开发者设计的,提供了深入理解Tomcat工作原理的...

    tomcat 7 源码分析-4 server初始化背后getServer().init()

    在Tomcat 7的源码中,`getServer().init()`方法可能位于`StandardServer`类中,这个类实现了`Lifecycle`接口,管理服务器的生命周期状态。当调用`init()`方法时,Tomcat会执行以下主要步骤: 1. 加载全局JNDI资源:...

    tomcat7源码环境部署

    在IT行业中,Tomcat是一个广泛使用的开源应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。这里我们讨论的主题是"Tomcat7源码环境部署",这涉及到对Tomcat服务器的深入理解,包括其内部工作...

    tomcat6源码

    3. **Jasper组件**:Jasper是Tomcat的JSP引擎,负责将JSP文件编译成Java Servlet。在Tomcat6中,Jasper会先将JSP文件转换为一个.java源文件,然后通过Java编译器生成.class字节码。Jasper还提供了对EL(Expression ...

    Tomcat服务器源码

    3. ** Jasper**:Jasper是Tomcat中的JSP编译器,将JSP文件转换为Servlet源码,再通过Java编译器编译成字节码。Jasper的主要类有`org.apache.jasper.JspC`和`org.apache.jasper.compiler.Generator`。 4. **Juli**:...

    tomcat架构的源码分析

    Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。通过本分析,读者将能更好地理解Tomcat的工作原理及其各组成...

    apache-tomcat-6.0.18源码

    Tomcat以其轻量级、高效和易用性而闻名,它是Apache软件基金会的项目之一。在这个源码版本中,我们可以深入理解Tomcat的工作原理以及其内部机制。 源码分析: 1. **目录结构**:解压后的源码文件夹通常包含`bin`、`...

    tomcat8.0源码

    Tomcat 8.0是Apache软件基金会的开源项目,是一个广泛使用的Java Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,用于部署和运行Web应用程序。源码分析对于理解其工作原理、优化性能或定制功能至关...

    tomacat-8.0.15源码

    1. `org.apache.catalina.core.StandardServer`:服务器的主要入口点,负责启动和关闭Tomcat。 2. `org.apache.coyote.http11.Http11NioProtocol`:HTTP/1.1连接器的实现,使用NIO进行非阻塞I/O。 3. `org.apache....

Global site tag (gtag.js) - Google Analytics