[Tomcat源码系列]构造解析 1)总体结构预览
[Tomcat源码系列]结构解析 1)总体结构预览一、从范例开始??? 在开始分析之前,我们先使用Tomcat组件来组装一
[Tomcat源码系列]结构解析 1)总体结构预览
一、从范例开始
??? 在开始分析之前,我们先使用Tomcat组件来组装一个完整的WebContainer。
1)准备好目录结构
??? 准备好如下目录结构
package ray.tomcat.test;import org.apache.catalina.connector.Connector;import org.apache.catalina.core.StandardEngine;import org.apache.catalina.core.StandardHost;import org.apache.catalina.core.StandardService;import org.apache.catalina.startup.HostConfig;public class TomcatMainV5{ public static void main(String[] args) throws Exception { // 设置基目录,使用这种方式貌似不够幽雅 System.setProperty("catalina.base", "C:/tomcattest/"); // Connector Connector connector = new Connector("HTTP/1.1"); connector.setPort(8080); // 请求处理器(Engine+Host) // Host StandardHost standardHost = new StandardHost(); standardHost.setName("localhost"); standardHost.setAppBase("webapps"); // HostConfig负责解析Context配置,并将Context加入到Host中, standardHost.addLifecycleListener(new HostConfig()); // Engine StandardEngine standardEngine = new StandardEngine(); standardEngine.setName("Catalina"); //此处可以看到Host是Engine的Child standardEngine.addChild(standardHost); standardEngine.setDefaultHost("localhost"); // Connector+请求处理器 组装成webserver StandardService standardService = new StandardService(); standardService.setName("Catalina"); //设置接收请求Connector,可支持多个Connector standardService.addConnector(connector); //设置请求处理器 standardService.setContainer(standardEngine); // 开始初始化 standardService.start(); while (true) { Thread.sleep(60000); System.out.println("still active"); } }}
?
3)访问http://localhost:8080/examples,可以看到examples应用生效了
二、总体结构预览
??? 从如上的范例,我们大概可以对Tomcat的主要组成有了基本的了解,包括其他一些在如上无法反映出来的组件,Tomcat由如下组件组成
1)请求连接接收和分发组件
Connector(org.apache.catalina.connector.Connector):包括我们在上一篇中了解的各种Protocol
2)请求处理组件
Engine(org.apache.catalina.Engine):Engine是请求处理的入口,一个Engine会包含多个Host,我们看看Tomcat中关于Engine的定义An Engine is a Container that represents the entire Catalina servlet engine. Host(org.apache.catalina.Host):Host代表了一个虚拟主机(virtual host),一个Host会包含多个Context,我们看看Tomcat关于Host的定义A Host is a Container that represents a virtual host in the Catalina servlet engine.?Context:Context代表了一个独立的应用,一个Context会包含多个请求处理器(Wrapper),我们看看Tomcat关于Context的定义A Context is a Container that represents a servlet context, and therefore an individual web application, in the Catalina servlet engine.?Wrapper:Wraper代表了一个Servlet,我们看看Tomcat关于Wrapper的定义
A Wrapper is a Container that represents an individual servlet definition from the deployment descriptor of the web application.
?
3)组合组件
Service:Service通过管理多个Connector和请求处理引擎,处理各Connector进入的请求,并由同一个请求处理引擎进行处理
三、结束语
??? 本篇通过一个范例对Tomcat的主体结构做一个预览,具体的细节我们在后面的篇章《生命期控制结构》、《请求处理结构》中更详细地分析。
1 楼 diecui1202 2011-01-06 没想到tomcat还可以这样启动,学习了~