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 是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。这个压缩包文件 "apache-tomcat-9.0.54-embed.tar.gz" 包含了可嵌入式的Tomcat版本,这意味着它可以在不依赖独立服务器的...
信息: 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作为一款广泛应用的Java EE服务器,其核心配置文件`tomcat-server.xml`对于优化服务器性能、管理和监控服务至关重要。本文将详细解析`tomcat-server.xml`中的主要元素和属性,帮助读者深入理解Tomcat的内部...
- Tomcat的启动过程涉及到Catalina、StandardServer、StandardService等关键组件。这些组件遵循Java的生命周期管理,如初始化、启动、停止和销毁等阶段。 - “conf”目录下的server.xml文件是Tomcat的主要配置文件...
Apache Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java EE Web应用服务器的Servlet和JSP规范。本资源是Apache Tomcat 8.5.100版本的源代码,对于理解Tomcat的工作原理、进行定制化开发或者优化性能具有...
Java中的Tomcat是一个广泛应用的开源Web服务器和Servlet容器,其设计模式的巧妙运用对于理解和优化软件架构至关重要。本文主要分析了Tomcat中两种主要的设计模式:门面模式和观察者模式。 1. 门面(Facade)设计...
它的主要类包括`org.apache.catalina.core.StandardServer`、`org.apache.catalina.core.StandardService`、`org.apache.catalina.core.StandardEngine`和`org.apache.catalina.core.StandardHost`,这些类构成了...
* className:指定实现 org.apache.catalina.Server 接口的类,默认值为 org.apache.catalina.core.StandardServer。 * port:指定 Tomcat 监听 shutdown 命令端口,必须设置该属性。 * shutdown:指定终止 Tomcat ...
Apache Tomcat 6是一款广泛应用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析有助于深入理解其工作原理,提高开发和调试Web应用的能力。在这个压缩包中,你将找到Apache Tomcat 6.0.32...
2. **创建Server**:通过`org.apache.catalina.core.StandardServer`类创建服务器实例,这是Tomcat的顶级容器。 3. **创建Service**:使用`org.apache.catalina.Service`接口创建服务,服务通常包含一个或多个...
Tomcat是一款开源的Java Servlet容器,由Apache软件基金会开发,它实现了Java EE中的Web应用服务器部分,特别是Servlet和JavaServer Pages (JSP)规范。《How Tomcat Works》是一本经典的书籍,详细解释了Tomcat的...
Apache Tomcat 7.0.57 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本的源代码包(src)是为开发者设计的,提供了深入理解Tomcat工作原理的...
在Tomcat 7的源码中,`getServer().init()`方法可能位于`StandardServer`类中,这个类实现了`Lifecycle`接口,管理服务器的生命周期状态。当调用`init()`方法时,Tomcat会执行以下主要步骤: 1. 加载全局JNDI资源:...
在IT行业中,Tomcat是一个广泛使用的开源应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。这里我们讨论的主题是"Tomcat7源码环境部署",这涉及到对Tomcat服务器的深入理解,包括其内部工作...
3. **Jasper组件**:Jasper是Tomcat的JSP引擎,负责将JSP文件编译成Java Servlet。在Tomcat6中,Jasper会先将JSP文件转换为一个.java源文件,然后通过Java编译器生成.class字节码。Jasper还提供了对EL(Expression ...
3. ** Jasper**:Jasper是Tomcat中的JSP编译器,将JSP文件转换为Servlet源码,再通过Java编译器编译成字节码。Jasper的主要类有`org.apache.jasper.JspC`和`org.apache.jasper.compiler.Generator`。 4. **Juli**:...
Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。通过本分析,读者将能更好地理解Tomcat的工作原理及其各组成...
Tomcat以其轻量级、高效和易用性而闻名,它是Apache软件基金会的项目之一。在这个源码版本中,我们可以深入理解Tomcat的工作原理以及其内部机制。 源码分析: 1. **目录结构**:解压后的源码文件夹通常包含`bin`、`...
Tomcat 8.0是Apache软件基金会的开源项目,是一个广泛使用的Java Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,用于部署和运行Web应用程序。源码分析对于理解其工作原理、优化性能或定制功能至关...
1. `org.apache.catalina.core.StandardServer`:服务器的主要入口点,负责启动和关闭Tomcat。 2. `org.apache.coyote.http11.Http11NioProtocol`:HTTP/1.1连接器的实现,使用NIO进行非阻塞I/O。 3. `org.apache....