一、从范例开始
在开始分析之前,我们先使用Tomcat组件来组装一个完整的WebContainer。
1)准备好目录结构
准备好如下目录结构
BaseDir(C:/tomcattest/)
--conf
--webapps
- 从{tomcat目录}/conf目录下的拷贝web.xml到如上的conf目录(可选,支持JSP和welcome file)
- 拷贝tomcat的examle应用到如上的webapps目录作为范例
2)范例(注意如下的代码说明部分)
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的主体结构做一个预览,具体的细节我们在后面的篇章《生命期控制结构》、《请求处理结构》中更详细地分析。
分享到:
相关推荐
tomcat的源码解析资料,加上tomcat的pdf解析中文版的,tomcat的源码。 挺不错的资源,大家可以学习下。
tomcat源码解析
tomcat 源码分析系列文档 http深入分析,tomcat中类的加载,tomcat的启动,tomcat的容器思想,
Tomcat源码解析.pdf
Tomcat源码Tomcat源码Tomcat源码Tomcat源码Tomcat源码Tomcat源码Tomcat源码
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
Tomcat 源码研究 全面解析Tomcat源码
how tomcat work源码及中文翻译
MyEclipse导入Tomcat源码.wps文档说明 apache-tomcat-6.0.37-src.zip源码
tomcat7源码下载tomcat7源码下载tomcat7源码下载tomcat7源码下载tomcat7源码下载tomcat7源码下载tomcat7源码下载tomcat7源码下载
手把手教你搭建Tomcat7源码开发环境,如果有了如下说明还搭建不成功,建议考虑下自己的理解能力,能不能走编码这条路。附近包括Tomcat源码、Tomcat源码开发环境依赖的包、Tomcat的环境编译工具ant 1、建立如下...
1.tomcat源码文件 2.tomcat程序文件 3.Ant程序文件 4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习...
tomcat的源码包
tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码tomcat 源码
tomcat源码导入myeclipse,里面包括所支持的jar文件与详细的导入说明
Tomcat源码研究.pdf
tomcat7的源码项目,可以导入到eclipse,自己编译运行tomcat。