`
ayufox
  • 浏览: 276226 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[Tomcat源码系列]结构解析 1)总体结构预览

阅读更多

一、从范例开始
    在开始分析之前,我们先使用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的主体结构做一个预览,具体的细节我们在后面的篇章《生命期控制结构》、《请求处理结构》中更详细地分析。

2
0
分享到:
评论
1 楼 diecui1202 2011-01-06  
没想到tomcat还可以这样启动,学习了~

相关推荐

    java web word文件 pdf文件在线预览源码

    而预览PDF文件,可能用到的是Apache PDFBox或者iText库,它们能够读取和解析PDF内容。 3. **文件流处理** 在线预览涉及到文件流的处理,服务器需要将文件内容转化为可以在浏览器中显示的格式,如HTML或图片。这...

    java在线预览源代码

    对于这些Microsoft Office格式的文件,转换通常涉及到解析它们的二进制结构,并将其转换为可以在Web上显示的形式。这可能需要使用到如Apache POI库来处理Office文件,以及像FlexPaper或SWFTools这样的工具来将这些...

    apache-tomcat-8.5.50-src.zip

    Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与...

    在线预览excel

    【在线预览Excel:kkFileView项目解析】 kkFileView是一个基于Spring Boot框架构建的开源文件预览系统,它提供了一种便捷的方式,使得用户无需下载文件就能在线查看Excel等不同类型的文档。该项目遵循最宽松的...

    SpringBoot在线预览PDF文件

    SpringBoot是一个由Pivotal Software开发的Java框架,它简化了基于Spring框架的应用程序开发,通过内嵌的Tomcat服务器,使得部署更便捷。本项目的核心是实现PDF在线预览功能,它利用了SpringBoot的Web服务特性,结合...

    fileManager 文件管理源码

    在部署时,将源码打包成 `.war` 文件,这是一种标准的Java Web应用程序归档格式,可以直接部署到支持Servlet容器(如Tomcat、Jetty)上运行。 此外,源码可能包含了MVC(Model-View-Controller)设计模式的应用,...

    文件上传与下载源码 含数据库

    - **Web容器**:源码可能需要部署在Tomcat、Jetty等Web容器上运行。 - **配置文件**:包括web.xml(Servlet配置)、数据库连接配置等,需要正确设置才能正常运行。 5. **学习与实践** - **阅读源码**:了解文件...

    基于安卓的文件管理器程序源码数据库.zip

    这部分源码可能涉及小程序的页面结构、数据绑定、网络请求、存储以及与安卓原生应用之间的通信。 4. **SpringBoot框架**:SpringBoot是Java后端开发的常用框架,用于快速搭建和配置服务。在这个项目中,SpringBoot...

    JSP源码——[新闻文章]永恒文章管理系统(YHCMS) v2.0 源码版_yhcms_v20_src.zip

    本文将深入探讨其核心知识点,包括系统架构、主要功能模块以及关键源码解析。 1. **系统架构** YHCMS v2.0采用经典的MVC(Model-View-Controller)设计模式,该模式将业务逻辑、数据模型与用户界面分离,提高代码...

    基于Springboot+Vue企业oa管理系统源码案例设计.zip

    《基于Springboot+Vue企业OA管理系统源码案例设计解析》 在现代企业信息化管理中,高效、便捷的办公自动化(OA)系统已经成为不可或缺的一部分。本文将深入探讨一个基于Springboot和Vue技术栈的企业级OA管理系统的...

    在线拍照源码下载免费

    本文将详细解析与"在线拍照源码"相关的知识点,以及如何使用JSP来实现这一功能。 首先,我们需要理解JSP(JavaServer Pages)的基本概念。JSP是Java平台上的一个动态网页技术,它结合了HTML、CSS和JavaScript等前端...

    随堂测微信小程序+ssm后端源码案例设计.zip

    10. **部署与运行**:在本地环境中,开发者通常会用到Apache Tomcat或Jetty等应用服务器部署SSM项目,而微信小程序需要在微信开发者工具中预览和调试。在生产环境中,可能涉及到服务器配置、域名解析、SSL证书等。 ...

    java毕业设计&课设-网上书店(视频+源码+资料).zip

    文档"java毕业设计&课设-网上书店(视频+源码+资料).doc"可能包含了项目介绍、设计思路、数据库设计细节、源码解析、部署步骤等内容,是学习和理解整个项目的重要参考资料。通过学习这个项目,学生不仅可以提升Java...

    影视播放网站 源码 数据库代码

    【标题】"影视播放网站 源码 数据库代码"涉及的是一个名为TubeHot的在线视频平台的源代码实现,其数据库部分也包含在内。这个项目是为创建一个类似于兔比影视网的网站而设计的,允许用户浏览、搜索和播放各种影视...

    基于springboot微信小程序的驾校预约平台源码数据库文档.zip

    部署环节可能涉及到服务器配置、应用容器如Tomcat的使用,以及域名解析和SSL证书等。 通过以上分析,我们可以看出这个项目涵盖了从客户端开发、后端服务、数据库设计到项目部署的全过程,是学习和实践全栈开发的一...

    JSP源码——图片浏览小程序(java+applet).zip

    【标题解析】 "JSP源码——图片浏览小程序(java+applet).zip" 这个标题揭示了我们要讨论的是一个基于Java Server Pages (JSP) 技术的源代码项目,其主要功能是一个用于浏览图片的小应用程序。这里的关键词“java+...

    Editplus下载

    2. **解析请求**:接收到请求后,Tomcat会对请求进行解析,提取出URL、方法类型(GET、POST等)、查询参数等信息。 3. **映射Servlet**:根据URL,Tomcat会查找相应的Web应用程序上下文和Servlet配置,确定哪个...

    基于SpringBoot的在线问卷调查系统源码数据库.zip

    1. Spring:作为Java企业级应用的基础框架,Spring提供依赖注入、AOP(面向切面编程)、事务管理等功能,为系统提供灵活的结构支持。 2. SpringMVC:是Spring的Web模块,负责处理HTTP请求,实现模型-视图-控制器的...

    基于jsp的超市管理系统源码数据库论文.doc

    本文将围绕论文的关键内容,包括系统开发背景、系统分析、需求分析、系统概要设计以及系统详细设计进行深入解析。 首先,超市管理系统是针对现代商业运营中对库存管理、销售统计、客户关系等需求而设计的。在第一章...

    JSP框架源代码

    它提供了一系列的控制器、模型绑定、数据验证以及视图解析等功能。开发者可以使用注解来配置路由,处理HTTP请求,并将结果返回到相应的视图。源代码中可能包含了Spring MVC的配置文件(如`spring-servlet.xml`),...

Global site tag (gtag.js) - Google Analytics