一、从范例开始
在开始分析之前,我们先使用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的主体结构做一个预览,具体的细节我们在后面的篇章《生命期控制结构》、《请求处理结构》中更详细地分析。
分享到:
相关推荐
而预览PDF文件,可能用到的是Apache PDFBox或者iText库,它们能够读取和解析PDF内容。 3. **文件流处理** 在线预览涉及到文件流的处理,服务器需要将文件内容转化为可以在浏览器中显示的格式,如HTML或图片。这...
对于这些Microsoft Office格式的文件,转换通常涉及到解析它们的二进制结构,并将其转换为可以在Web上显示的形式。这可能需要使用到如Apache POI库来处理Office文件,以及像FlexPaper或SWFTools这样的工具来将这些...
Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与...
【在线预览Excel:kkFileView项目解析】 kkFileView是一个基于Spring Boot框架构建的开源文件预览系统,它提供了一种便捷的方式,使得用户无需下载文件就能在线查看Excel等不同类型的文档。该项目遵循最宽松的...
SpringBoot是一个由Pivotal Software开发的Java框架,它简化了基于Spring框架的应用程序开发,通过内嵌的Tomcat服务器,使得部署更便捷。本项目的核心是实现PDF在线预览功能,它利用了SpringBoot的Web服务特性,结合...
在部署时,将源码打包成 `.war` 文件,这是一种标准的Java Web应用程序归档格式,可以直接部署到支持Servlet容器(如Tomcat、Jetty)上运行。 此外,源码可能包含了MVC(Model-View-Controller)设计模式的应用,...
- **Web容器**:源码可能需要部署在Tomcat、Jetty等Web容器上运行。 - **配置文件**:包括web.xml(Servlet配置)、数据库连接配置等,需要正确设置才能正常运行。 5. **学习与实践** - **阅读源码**:了解文件...
这部分源码可能涉及小程序的页面结构、数据绑定、网络请求、存储以及与安卓原生应用之间的通信。 4. **SpringBoot框架**:SpringBoot是Java后端开发的常用框架,用于快速搭建和配置服务。在这个项目中,SpringBoot...
本文将深入探讨其核心知识点,包括系统架构、主要功能模块以及关键源码解析。 1. **系统架构** YHCMS v2.0采用经典的MVC(Model-View-Controller)设计模式,该模式将业务逻辑、数据模型与用户界面分离,提高代码...
《基于Springboot+Vue企业OA管理系统源码案例设计解析》 在现代企业信息化管理中,高效、便捷的办公自动化(OA)系统已经成为不可或缺的一部分。本文将深入探讨一个基于Springboot和Vue技术栈的企业级OA管理系统的...
本文将详细解析与"在线拍照源码"相关的知识点,以及如何使用JSP来实现这一功能。 首先,我们需要理解JSP(JavaServer Pages)的基本概念。JSP是Java平台上的一个动态网页技术,它结合了HTML、CSS和JavaScript等前端...
10. **部署与运行**:在本地环境中,开发者通常会用到Apache Tomcat或Jetty等应用服务器部署SSM项目,而微信小程序需要在微信开发者工具中预览和调试。在生产环境中,可能涉及到服务器配置、域名解析、SSL证书等。 ...
文档"java毕业设计&课设-网上书店(视频+源码+资料).doc"可能包含了项目介绍、设计思路、数据库设计细节、源码解析、部署步骤等内容,是学习和理解整个项目的重要参考资料。通过学习这个项目,学生不仅可以提升Java...
【标题】"影视播放网站 源码 数据库代码"涉及的是一个名为TubeHot的在线视频平台的源代码实现,其数据库部分也包含在内。这个项目是为创建一个类似于兔比影视网的网站而设计的,允许用户浏览、搜索和播放各种影视...
部署环节可能涉及到服务器配置、应用容器如Tomcat的使用,以及域名解析和SSL证书等。 通过以上分析,我们可以看出这个项目涵盖了从客户端开发、后端服务、数据库设计到项目部署的全过程,是学习和实践全栈开发的一...
【标题解析】 "JSP源码——图片浏览小程序(java+applet).zip" 这个标题揭示了我们要讨论的是一个基于Java Server Pages (JSP) 技术的源代码项目,其主要功能是一个用于浏览图片的小应用程序。这里的关键词“java+...
2. **解析请求**:接收到请求后,Tomcat会对请求进行解析,提取出URL、方法类型(GET、POST等)、查询参数等信息。 3. **映射Servlet**:根据URL,Tomcat会查找相应的Web应用程序上下文和Servlet配置,确定哪个...
1. Spring:作为Java企业级应用的基础框架,Spring提供依赖注入、AOP(面向切面编程)、事务管理等功能,为系统提供灵活的结构支持。 2. SpringMVC:是Spring的Web模块,负责处理HTTP请求,实现模型-视图-控制器的...
本文将围绕论文的关键内容,包括系统开发背景、系统分析、需求分析、系统概要设计以及系统详细设计进行深入解析。 首先,超市管理系统是针对现代商业运营中对库存管理、销售统计、客户关系等需求而设计的。在第一章...
它提供了一系列的控制器、模型绑定、数据验证以及视图解析等功能。开发者可以使用注解来配置路由,处理HTTP请求,并将结果返回到相应的视图。源代码中可能包含了Spring MVC的配置文件(如`spring-servlet.xml`),...