How tomcat works——引言

How Tomcat works(PDF) How Tomcat works(PDF),不可用于商业用途,如有版权问题,请联系删除! 立即下载

代码和UML图:https://github.com/Aresyi/HowTomcatWorks
排版更好的百度电子书:https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60
电子书已下架 可关注微信公众号 梦语路 获取

概述

欢迎阅读《How Tomcat Works》。这本书详细的剖析了Tomcat 4.1和5.0工作原理,并讲解了其代号为“Catalina” 当前免费、开源、最流行的servlet容器的内部运作机制。Tomcat是个复杂的系统,它是由许多不同的组件(Component)组成。那些想了解Tomcat工作原理的童鞋们往往很纳闷:我应该从哪里开始呢(O(∩_∩)O哈哈~狗咬刺猬——无处下牙)?别急,有了此《葵花宝典》保你无需自宫便知如何咬下Tomcat。这本书首先描绘了Web Server工作原理的大画面,然后一个个建立每个组件的微版本(组件原型),以此让童鞋们更容易的学习了解每个组件(分解动作)。最后,再将真正的组成部件组合起来予以解释。

你应该先阅读这个介绍,因为它说明了这本书的结构。并且向我们简述了如何构建应用程序。“准备必备软件“一节告诉我们:需要下载哪些软件,如何构建自己的代码目录结构等。

本书适合哪些读者

本书适合任何一位java技术工作者。

  1. 如果你是位servlet/JSP程序员,或是位Tomcat使用者,并且对“Servlet容器是如何工作”的有着浓厚的兴趣,那么本书正是为你准备的。
  2. 如果你想加入Tomcat的开发团队,那么你得先学习这些已经存在的代码。
  3. 如果你未曾参与过web开发,但是你对一般的软件开发有兴趣,那么你可以从本书学习如何去设计和开发诸如Tomcat这样的大型应用程序。
  4. 如果你需要配置或是定制Tomcat,那么你应该阅读此书。

要理解本书的内容,首先需要你对java面向对象编程以及Servlet开发有所学习理解。如果你不熟悉后者,这里有大量的书籍供你学习参考(If you are not familiar with the latter, there are a plethora of books on sendets, including Budi’s Java for the Web with Servlets, JSP, and EJB.)为了方便更容易理解,每章均以即将要讨论的主题内容的背景资料信息开始。

Servlet容器是如何工作的

Servlet容器是个复杂系统。然而,对于一个Servlet容器来说,处理一Servlet请求,也就基本上三件事而已:

  1. 创建一个请求对象,并给它填充一些可能被发起调用的Servlet使用到信息,比如:参数、头信息、查询字符、URI等。一个请求对象是javax.servlet.ServletRequest 接口或javax.servlet.http.ServletRequest接口的实例对象。
  2. 创建一个应答对象,发起调用的Servlet通过它发送(服务器)响应信息给web客户端。一个应答对象是javax.servlet.ServletResponse接口或javax.servlet.http.ServletResponse接口的实例对象。
  3. 调用Servlet的service方法,传递请求和响应对象。这里,Servlet读取请求对象的信息,并且向应答对象中写入响应信息。

伴随着你阅读每个章节,你将会发现Catalina Servlet容器的详细细节讨论。

Catalina结构图

Catalina是软件中相当复杂而精美的一块,源于它优雅的设计和开发。它也是模块化的。在“一个Servlet容器如何工作的“章节中,你会发现构成Catalina的二个核心模块:connector和container。
这里写图片描述
图一

图1中结构图,当然还是相当简单的。在后续的章节中,你将会逐步一点一点的学习到所有的“零部件”(Later in the following chapters you will unveil all smaller components one by one)。

现在,我们回到图1,这里的连接器(connector)链接了一个请求(request)和容器(container)。连接器的工作是为它收到的请求创建一个request对象和response对象。然后传递给container。Container从连接器那里接收request和response对象,并且负责调用Servlet的service方法。

但是要知道(Bear in mind though),刚才上面的描述只是冰山一角。有许多事情需要container处理的。比如:在它调用servlet的service方法之前,它必须加载servlet,判断这个请求用户是否有权限(如果需要的话),更新session等等。因此,也没什么好惊讶的了:一个Container使用那么多不同模块来处理工作。比如:“Mananger”模块负责处理用户Session,“Loader”模块负责加载servlet,等等。

Tomcat 4和5

这本书,涵盖了Tomcat4和Tomcat5。这2个版本之间有些不同之处:

  1. Tomcat5支持Servlet2.4和Jsp2.0规范,Tomcat4支持Servlet2.3和Jsp1.2规范。
  2. Tomcat5的默认连接器(connector)比Tomcat4更高效。
  3. Tomcat5共享了一后台线程替代了Tomcat4中的每一组件都使用自己后台线程的做法。所以,在这点上,Tomcat5使用了更少的资源。
  4. Tomcat5不在需要映射组件去寻找子组件,因此简化了编码(Tomcat 5 does not need a mapper component to find a child component, therefore simplifying the code.)。

每章概述

本书共20章。前2章作为一个简介。第一章解释了“Http Server”是如何工作的;第二章描绘了一简单的Servlet容器。接下来二章重点放在“Connector”连接器上,第5章~第20章涵盖了容器中每一个组件。如下是每章的简介。

注意,伴随着每章被介绍的组件,都会有一相似此组件应用的Demo.

第1章:介绍了一个简单的“HTTP Server”。构建一个“HTTP Server”,你需要知道java.net package中的两个类:Socket 和ServerSocket的内部工作机制。这里有足够多的关于这两个类的背景资料供你去理解本章的Demo应用。

第2章:阐述了一个简单的Servlet容器是如何工作的。本章开始介绍了两个简单的Servlet容器应用,它能够很好的为一个简单的servlet请求处理静态资源。特别,你将学到怎样创建request和response对象,并把它们传递给请求的Servlet的service()方法。这里的servlet能够在servlet容器中运行,并且你可以通过web浏览器访问(调用)它。

第3章:介绍了Tomcat4中默认连接器的简易版本。本章编写的应用Demo将作为理解第四章中讨论的连接器的工具。

第4章:介绍了Tomcat4中的默认连接器。这个连接器已不再推荐使用,一个更高效更受喜欢的叫做“Coyote”连接器取代了它。尽管如此,默认连接器还是比较简单容易被理解的。

第5章:讨论了“container”模块。容器是通过org.apache.catalina.Container接口抽象的。这里有4种类型容器:engine、host、 context和 wrapper。本章提供的2个应用Demo用到了contexts 和wrappers。

第6章:讲解“生命周期(Lifecycle)”接口。此接口定义了Catalina组件生命周期,并且提供了简练的方式通知其他相关组件——当事件发生时。另外Lifecycle接口还提供一优美机制:通过一个star/stop来启动和停止Catalina中的所有组件。

第7章:涉及到Loggers,此组件用来记录错误信息和其他信息。

第8章:讲解了Loader相关。Loader是Catalina中重要的模块,它负责加载Servlet和web应用中的class。本章也介绍了如何高效完美地重载应用。

第9章:讨论Manager组件,此组件管理用户Session。介绍了各种各样的Manager,一个manager怎样持久地存储session对象。在本章最后,你将学会怎样构建:使用StandardManager实例运行一个持有session对象存储值的servlet的应用(uses a StandardManager instance to run a servlet that uses session objects to store values)。

第10章:涵盖 web 应用程序安全性限制,用来限制进入某些内容。你将会学习与安全相关的实体,例如主体(principals),角色(roles),登录配置,认证等等。你也将会写两个程序,它们在StandardContext 对象中安装一个身份验证阀并且使用了基本的认证来对用户进行认证。

第11章:讲解org.apache.catalina.core.StandardWrapper类在WEB应用中扮演着Servlet时的细节。尤其,本章还介绍了如何过滤和servlet的service()方法被调用。本章应用Demo应用StandardWrapper实例描绘Servlet。

第12章:讲解org.apache.catalina.core.StandardContext类,描绘一WEB应用。尤其,本章介绍了StandardContext对象如何配置,每当有HTTP请求时会发生什么、怎么样支持动态重新加载,Tomcat5如何分配一线程周期性地在它相关联组件间处理定时任务。

第13章:介绍了另二个容器:host和engine。你也会发现这二个容器的标准实现:org.apache.catalina.core.StandardHost和org.apache.catalina.core.StandardEngine。

第14章:介绍server和service二个组件。server为整个servlet容器提供一个优雅的启动/停止机制,service为一个container和一个或更多的connector服务。本章的应用Demo介绍了如何使用server和service。

第15章:讲解通过Digester配置一个WEB应用(Digester是Apache软件基金会的另一开源项目)。在正式讲解前(For those not initiated),本章通过一小节简要的介绍了Digester包和怎样使用它把XML文档的节点转化为Java对象。然后通过配置一StandardContext讲解了ContextConfig对象。

第16章:讲解shutdown钩子。Tomcat使用它清除资源,当用户停止Tomcat时(例如:用户通过发送正常的shutdown命令或不正常通过控制台关闭Tomcat)。

第17章:讲解了通过Bat、Shell脚本来启动和关闭Tomcat。

第18章:介绍Deployer组件。此组件负责部署和装载WEB应用。

第19章:讨论特殊接口——ContainerServlet,使servlet有权使用(access to)Catalina内部对象。特别,讨论了Manager应用——使用Manager部署应用。

第20章:讨论JMX和Tomcat如何为它的内部对象通过创建MBeans变为可易管理。

每章应用Demo

每章穿插的一个或多个应用Demo,致力于Catalina中一个具体的组件。通常你会发现通过解释和编码简易版本来介绍如何使用Catalina中一个个组件。每章中所有类和接口均位于ex[chapter number].pyrmont包或子包中。例如:第一章应用Demo位于ex01.pyrmont包。

准备必备软件

本书中应用Demo运行在J2SE1.4上。压缩的的原文件可以通过作者网站www.brainysoftware.com 来下载。它包含Tomcat 4.1.12的源码和本书中应用Demo。如果你已经安装了J2SE 1.4和配置了JDK环境变量,现在如下操作:

  1. 解压缩zip文件。新解压出的文件将会位于HowTomcatWorks目录下。HowTomcatWorks是你的工作目录路径。HowTomcatWorks下有几个子目录,包括lib(包含包文件),src(包含源文件),webroot(包含HTML文件和三个servlet例子),webapps(包含应用例子)。
  2. 切换到工作目录,并编译java文件。如果你使用的是windows系统,请执行win-compile.bat文件。如果你的电脑是Linux机器,请操作:(不要忘记赋予权限,如果需要的话)./linux-compile.sh

阅读压缩文件中的Readme.txt文件将会发现更多信息。


**代码和UML图:**https://github.com/Aresyi/HowTomcatWorks
排版更好的百度电子书:https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60


How Tomcat Works 中文版.pdf tomcat的基本思想,学习完可以对理解spring的基本原理有大致了解,很值得学习 立即下载

相关推荐

How Tomcat Works 中文版

How Tomcat Works 中文版.pdf,很好的一本书,了解tomcat工作原理

how tomcat works[0]: 电子书及源代码分享

链接: https://pan.baidu.com/s/1rYc-3SkV20tL9AOxrAzW4w 提取码: pnyn

Monkey-yc 1155

tomcat工作原理深入详解——HowTomcatWorks中文版.pdf

tomcat工作原理深入详解——HowTomcatWorks中文版.pdf

How Tomcat Works 3

Tomcat体系结构中有一个非常重要的概念——连接器,看下面这张图 一个connecotr对应一个container,connector用于接收请求,然后传递给container组件去处理,tomcat中默认的连接器是coyote,按照协议类型分,有http和ajp的连接器。 HTTP/1.1协议负责建立HTTP连接,web应用通过浏览器访问tomcat服务器用的就是这个连接器,默认监

tangyongzhe的专栏 754

vscode远程连接deepin出错:过程试图写入的管道不存在的解决方法

背景:昨天我用vscode使用ssh远程开发还处于正常状态,今天刚打开电脑,并启动deepin,再次使用vscode重新连接就出现异常。意思就是22号默认端口连接被拒绝,所以要先确定ssh是否连接。3.重新进入vscode里面,重新连接,如图成功连接。,查看port后面的端口号是不是22号。1.检查sshd是否启动。

qq_43573047的博客 2946

LabView实现modbus通讯

labview实现modbus通讯

Lrj的博客 7662

《How Tomcat Works》学习(一)——简易web服务器的实现

前言 《How Tomcat Works》是一本老书。现在Java的同学,大概率对servlet都是随便略过即可,因为现在springmvc、springboot之类的,要上手根本不需要搞那么复杂。我之所以淘来这本书学习,一是因为我读大学的时候,javaweb还是要玩servlet那一套的,有情节在那里,二是因为想深入了解springmvc的源码,所以对servlet这块也要有一定理解才行。这个系列准备按照书中的章节,一遍敲代码一遍总结,一步一步为自己实现的web服务器添砖加瓦。 ...

sadoshi的专栏 723

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 338

How Tomcat Works 1:一个简单的Web 服务器

我们可以将Tomcat 简单理解成一个Web 服务器。这一节主要是讲解Web 服务器是如何工作的。 Web 服务器也可以看作是Http 服务器,主要是因为它是使用Http 来与客户端进行通信的。一个基于Java 的Web 服务器,最重要的两个类是java.net.Socket 和 java.net.ServerSocket , 并通过Http 消息进行通信。其中前者是Socket 客户端,后者是...

时光钟摆 1408

表格数据学习的图神经网络综述

今天学习一篇发表在中科院一区期刊《ACM Computing Surveys》的综述文章《Graph Neural Networks for Tabular Data Learning: A Survey with Taxonomy & Directions》,该刊主要刊载计算机理论方法领域的系统性综述与教程论文,注重跨学科技术融合研究,最新的影响因子为28.0。本文的目的在于通过学习这篇文章,了解关于表格数据学习点图神经网络一些基础知识。

qq_41009600的博客 799

e-puck场景搭建

可以注意到一个黑色的小窗口出现在三维视图的左上角。它显示了电子吸盘机器人的摄像头拍摄的图像。该图像将保持黑色,直到机器人的控制器明确启用相机。最后,单击右上角的“x”可以关闭它。在对话框中,选择PROTO节点(Webots项目)/robots/gctronic/e-puck/e-puck(Robot)。一个电子吸盘机器人应该出现在竞技场的中央。通过按Alt+左键单击+拖动,对机器人施加力。无法对WoodenBox节点施加力,因为默认情况下,它们没有质量,并且被视为粘在地板上。将新控制器与机器人链接。

weixin_66540163的博客 767

Tomcat| how tomcat works总结

开篇先把关于tomcat的神图供上。 tomcat架构.png 这本书共分为20个章节,本文主要是对这本书的各个章节做一下总结。 第一章 simple web server 第一章搭建了一个最简单的web服务器,主要包括三个类,Request、Response和HttpServer,其中request类对发送来的报文做最简单的解析;response类响应一个简单的静态html页面;httpServer则是使用serversocket的accept方法来对端口进行监控。 第二章 a ..

YvesHe的专栏 899

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1341

【How Tomcat Works】深入剖析Tomcat——引言

技术方面以前一直是在扩张自己的领土,暑期想趁这个a block of time的机会提升一下,所以从这个熟悉又陌生的“汤姆猫”下手。然专研未几,满头大包。偶遇此佳作,如获珍宝,字字玑珠,一扫前日之悻悻然,不禁喜极而泣,遂尊“中学为体,西学为用”之遗训,译之以飨读者,私下想来,也是极好的!!咳咳,下面改说人话。在引言部分,基本上可以跳过不看,相反看完本书或者是这方面有过很多阅读的人,再来看引言感觉会

Jackie Tan的专栏 972

caverdock如何使用,一文给你多方案教学!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1388

从0到1打造一台机器人走起来

1)本体机械结构设计,依据人体生物学和生物力学知识,结合机器人运动时各关节扭矩需求,进行合理选用电机,比如胯部需要大扭矩,腿部惯量小等2)硬件拓扑上,分层架构的信号层和功率协同工作,高带宽,低延时,硬实时3)步态规划设计与验证环节实机回溯和部署过程:Real2Sim,Sim2Sim,Sim2Real。

weixin_43163941的博客 244

推荐一本好书《How Tomcat Works》

上学期忙这忙那的,基本上没时间继续看tomcat的源码。好不容易熬到期末考试结束了,想趁回家过年的空余时间继续研究研究代码,无奈硬盘偏偏坏了,整个寒假就没写过一行代码,只是在空余时间看完了《Java并发编程实践》,看完后惊叹自己对并发编程所知的是如此的皮毛,同时也顺便推荐一下这本书。不过呢,写这篇blog不是为了介绍《Java并发编程实践》,毕竟在网上已经有太多人讨论了。此处是介绍另外一本关于to

王程斯的专栏 3万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

springboot原理

引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。 Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),

梦想是很难很难的,所以先勇敢一点 275

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

How Tomcat Works -- 目录

《How Tomcat Works》这本书的读书笔记,及主要内容感想。 作为一个世界范围广泛使用的强大框架,Tomcat必然有非常多的设计思想、设计模式,让我们学习。 不看这种包含设计思想的框架,只看关于设计的书籍,只做业务应用系统的开发,比较难提高设计能力,因为,业务系统更关注业务问题,可能比较常会遇到大数据、高并发类问题的解决,但是设计思想很少。 从高层到底层,从业务应用到通用框架,最后都会回到底层上来,底层的东西,更像技术。越往高层,业务占得比重越大,越容易脱离技术本身。 底层的东西有什么呢?比如

Java之旅 4896

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

How Tomcat Works(二十)

    要使用一个web应用程序,必须要将表示该应用程序的Context实例部署到一个host实例中。在tomcat中,context实例可以用war文件的形式来部署,也可以将整个web应用拷贝到Tomcat安装目录下的webapp下。对于部署的每个web应用程序,可以在其中包含一个描述文件(该文件是可选的),该文件中包含了对context的配置选项,是xml格式的文件。注意,tomcat4和to...

weixin_34258078的博客 172

How tomcat works——18 部署

概述要使得一个 web 应用可以访问,则应用上下文(Context)必须先部署在主机(Host)上。在 Tomcat 中,一个应用上下文可以以 WAR 文件的形式部署,也可以直接将整个应用程序部署在Tomcat 安装目录的 wabapp 目录下面。部署的每个应用,都可以有一个配置描述文件用来配置该上下文,配置文件以 XML 文档的形式存在。注意:在 Tomcat4 和 5 中有两个已经部署好的应用:

终日思 < 须臾学 1339

探索 Tomcat 内核:HowTomcatWorks 项目详解

探索 Tomcat 内核:HowTomcatWorks 项目详解 是一个开源项目,旨在深入解析 Apache Tomcat 的工作原理。对于Java Web开发者,特别是那些希望理解和优化服务器性能的人来说,这是一个极具价值的学习资源。 项目简介 Apache Tomcat 是一款广泛使用的Java Servlet容器,它实现了Java EE的Web部分规范。HowTomcatWorks项目由 A...

gitblog_00057的博客 519

How Tomcat Works.pdf

相当好的tomcat学习资料。 请看附件。

以AI漫画为主。 246

How Tomcat Works 第一章 - 了解HTTP、Socket、ServerSocket构建简单的 Web 服务器

本章主要是对第一章内容进行归纳,了解一个简单的HTTP服务器是如何运行,以及尝试搭建一个简单的服务器,所需要java.net里面的Socket和类的基本运用。在了解Socket和之后,手动简单搭建一个最基础的HTTP服务器。

qq_43600166的博客 1157
上一篇: 解剖Tomcat——Tomcat是如何工作的
下一篇: How tomcat works——1 一个简单的Web Server
易德军
博客等级 码龄19年 134粉丝 74原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值