`
yjhexy
  • 浏览: 331097 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

tomcat源码分析之一《架构》

阅读更多

首先感谢我的好朋友罗兵,此文摘自他的文章

tomcat源码分析之一《架构》   

Tomcat是apache基金会下非常重要并且使用非常普遍的项目,任何使用java开发的程序员基本上都使用过tomcat。兴趣使然,抽了时间对tomcat 6.0的源码和架构进行了阅读和分析,通过对源码的阅读,希望能对tomcat和更加清晰的认识,对java应用服务器的原理有个大致的理解,更重要的是希望在阅读别人的代码的过程中,吸取别人的宝贵和独到的观点和想法。废话不多说。

先来看一下server.xml文件:



从server.xml文件我们就可以基本上看出tomcat的组件化架构。介绍一下tomcat中主要的组件和概念:

Server

它表示的就是整个tomcat J2EE容器。包含了所有的服务以及服务上下文环境。

在tomcat中server只有一个。

Service

它表示tomcat提供的一个服务。

所谓服务,就是包含一至多个连接器(Connector)的组件,并且是能够对用户请求作出响应的组件。

在tomcat的server中,可以有一至多个service。

Connector

它表示与用户请求建立连接的连接者。基于各种协议的请求访问tomcat时,都会首先都会通过Connector进行处理。
Tomcat中定义了两种 Connector,一个是基于Http协议,处理普通的http请求;

一个是AJP协议,用户处理有其他应用服务器(如apache,IIS)转发而来的请求。

Engine

它表示的是一个真正处理用户请求的处理引擎。
在tomcat中一个 Engine是个容器,继承自org.apache.catalina.Container,因为只会处理servlet请求,即就是一个 servlet 容器。
引擎(Engine)从连接器(Connector)那里接收到请求,并对请求进行相应的处理,返回结果给连接器,最终返回给客户端。

Host

它在tomcat中代表的就是一个虚拟主机。Host也是个容器,继承自org.apache.catalina.Container。
一个引擎可以包含很多的主机(Host),一个虚拟主机中可以包含多个Web应用(Context组件)。

Context

   它表示一个具体的web应用。一个主机可包含多个Web应用,所以可有多个Web应用上下文,不同的上下文可用不同路径来表示。

下面在看一下uml结构:

 
 

反映到架构图上就是这样的:  



 
 
总结一下,tomcat采用了清晰的组件化的架构

位于顶端的server代表了整个tomcat服务器;

server中包含一到多个service提供各种服务,默认的是名称为catalina的服务

service提供请求服务首先是根据不同协议的客户端请求选择相应的Connector来进行处理的,

Connector对请求进行分析后,转而交给真正的处理引擎(Engine),即Servlet容器。

处理引擎(Engine)内部实例化一个至多个虚拟主机(Host),

对应不同的域名请求。每个虚拟主机又包含多个web应用和上下文环境(Context),

上下文中的web应用收到客户端请求后对请求进行解析处理,

返回响应结果给Connector,并最终返回给客户端。

 

===============================

我自己写的PPT

http://docs.google.com/present/edit?id=0AVNMFcjKl_VCZG52OGsyaF8wY2JieGs0ZnE&hl=en

  • 大小: 33 KB
  • 大小: 20.6 KB
  • 大小: 41.8 KB
分享到:
评论
2 楼 gtandsn 2012-07-10  
楼主很不错的
1 楼 leiyunshi2008163.co 2011-02-11  
看得出楼主是个非常有想法的人。借鉴学习学习!

相关推荐

    Python基于yolo的健身姿势检测与姿态矫正建议系统源代码+使用说明

    Python基于yolo的健身姿势检测与姿态矫正建议系统源代码+使用说明 model:保存模型参数 config.yaml:配置文件 resource:输入文件夹,具有固定的目录结构(动作-视角-标准/错误点) output:输出文件夹,保持和resource相同的目录结构 main.py:实现resource2output方法,将resource中的资源全部提取数据并输出(csv格式)到output的相应位置 tasks:任务文件夹,对于不同的健身任务,分别实现标准性判别方法 keypoint.py:是对yolo模型返回的节点进行对象封装,其中的Keypoint对象封装了返回结果(是一个数组)中各关节位置对应数组中的位置,这样就不需要通过下标直接获取节点,而是通过例如get("l_elbow")的实例方法获取节点 pull_up.py:为具体健身任务实现标准性判别方法,这里是对引体向上的处理 task_processor.py由于main.py是在对resource文件夹中所有资源进行处理,不同的方法将对应不同的处理函数,task_processor.py中实现了TaskProces

    使用谷歌地球引擎(GEE)和 Python 在孟加拉国西北部绘制基于机器学习算法的作物类型图.ipynb

    精确的作物类型图对于监测种植模式、可持续利用现有自然资源和估算收成至关重要。人工数字化和标注--绘制作物类型图的常用方法--大多费时、费钱,甚至容易出现人为错误。近来,机器学习算法已发展成为利用卫星图像对作物品种进行分类的经济有效的替代方法。为应对最新进展,本研究将采用机器学习算法,利用哨兵-2 图像对孟加拉国西北部(拉杰沙希县戈达加里乡)的 6 种作物类型进行分类。将研究四种机器学习算法(随机森林、人工神经网络、KNN 和支持向量机),以准确绘制作物类型图。

    【光伏预测】基于蛇群优化算法SO优化高斯过程回归GPR实现光伏多输入单输出预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【光伏预测】基于鹈鹕优化算法POA优化高斯过程回归GPR实现光伏多输入单输出预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    深度学习图形识别点位知识

    资源说明: 为提高弱纹理图像关键目标点的检测识别能力,提出基干深度学习的弱纹理图像关键目标点识别定位方法;构建低光照强度弱纹理图像关键目标点的拓扑特征分布模型,采用透射率作为检测系数,结合亮通道的先验知识,建立像素大数据分布集................................ pdf文件。请使用支持pdf阅读的工具打开.

    【创新未发表】Matlab实现引力搜索优化算法GSA-GRU实现风电数据预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【元胞自动机】基于matlab元胞自动机交通流仿真带有弯道的单车道(含时空图)【含Matlab源码 9047期】.mp4

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    编译原理实战-基于c语言实现表达式计算器+项目源码+文档说明

    <项目介绍> 编译原理实战之表达式计算器 -------- 不懂运行,下载完可以私聊问,可远程教学 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    毕业设计&amp;课设-用于 Spring Boot 的开源渗透框架及高危漏洞利用工具.zip

    毕业设计&课设-用于 Spring Boot 的开源渗透框架及高危漏洞利用工具 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    【创新未发表】Matlab实现人工蜂鸟优化算法AHA-GRU实现风电数据预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    基于二阶锥松弛的分布式电源接入配电网潮流求解方法及算例

    Matlab代码

    chart.js 4.4.6版

    基于jquery的图表框架

    基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)

    基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matlab GUI界面的疲劳检测系统源码+文档说明(毕业设计和课程设计都适用)基于matl

    计算机图形学之动画和模拟算法:Procedural Animation:碰撞检测与响应.docx

    计算机图形学之动画和模拟算法:Procedural Animation:碰撞检测与响应.docx

    斯坦福最新2017年cs231n课程ppt-16

    机器学习 Adversarial Examples and Adversarial Training Overview • What are adversarial examples? • Why do they happen? • How can they be used to compromise machine learning systems? • What are the defenses? • How to use adversarial examples to improve machine learning, even when there is no adversary

    Matlab实现牛顿拉夫逊优化算法NRBO-Kmean-Transformer-BiLSTM负荷预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【创新未发表】Matlab实现三角测量拓扑聚合优化器TTAO-GRU实现风电数据预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【光伏预测】基于雾凇优化算法RIME优化高斯过程回归GPR实现光伏多输入单输出预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【发文无忧】基于凌日优化算法TSOA-Kmean-Transformer-GRU实现数据回归预测算法研究Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    网络安全解读网络安全政策.pdf

    网络安全解读网络安全政策

Global site tag (gtag.js) - Google Analytics