《How Tomcat works》
容器是一个处理用户servlet请求并返回对象给web用户的模块。
org.apache.catalina.Container接口定义了容器的形式,用四种容器:Engine(引擎),Host(主机),Context(上下文),和Wrapper(包装器)。这一章将会介绍Context和wrapper。而Enginer和Host会留到第十三章介绍。这一章首先介绍容器接口,然后介绍容器的工作流程。然后介绍的内容是Wrapper和Context接口。然后用两个例子来总结wrapper和context容器。
容器接口
一个容器必须实现org.apache.catalina.Container接口。就如在第四章看到的那样,传递一个Container实例给Connect对象的setContainer方法,然后Connect对象就可以使用container的invoke方法,重新看下第四章中Bootstrap类的代码如下:
HttpConnector connector = new HttpConnector();
SimpleContainer container = new SimpleCOntainer();
connector.setContainer(container);
对于Catalina容器首先需要注意的是它一共有四种不同的容器:
Engine:表示整个Catalina的servlet引擎
Host:表示一个拥有数个上下文的虚拟主机
Context:表示一个web应用,一个context包含一个或多个wrapper
Wrapper:表示一个独立的servlet
每一个概念之上都是用org.apache.catalina包来表示的。Engine Host Context 和 Wrapper接口都实现了Container即可。它们的标准实现是StandardEngine,StandardHost,StandardContext,and StandardWrapper,它们都是org.apache.catalina.core包的一部分。
所有的类都扩展自抽象类ContainerBase.
一个Catalina功能部署不一定需要所有的四种类型的容器。
一个容器可以有一个或者多个低层次的子容器。其大小关系是Engine->Host->Context->Wrapper。
Contaner接口被设计成Tomcat管理员可以通过Server.xml文件配置来决定其工作方式的模式。他通过一个pipeline(流水线)和一系列的阀门来实现。
《How Tomcat works》的更多相关文章
- 《how tomcat works》阅读笔记 - 2 - 门面设计模式,避免强制转换
在第二章 2.3节中 try { servlet = (Servlet) myClass.newInstance(); servlet.service((ServletRequest) request ...
- How Tomcat Works(二)
我们这些可怜虫,只有沿着大神的思路,这样我们才能进步得更快:因为我们不是跟大神处于同一级别上.所以我这里是参考<How Tomcat Works>这本英文版的大作来理解tomcat的工作原 ...
- How tomcat works学习笔记
最近在看Tomcat的源码, 所以找了一本相关的书籍<How tomcat works>. 博客内容多为 学习该书时所记录的笔记.(如有侵权行为,请联系我:eviltomorrow@163 ...
- 翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器
原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...
- 翻译《Writing Idiomatic Python》(三):变量、字符串、列表
原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...
- [转载]《C++0x漫谈》系列之:多线程内存模型
<C++0x漫谈>系列之:多线程内存模型 By 刘未鹏(pongba) 刘言|C++的罗浮宫(http://blog.csdn.net/pongba) <C++0x漫谈>系列导 ...
- 《dive into python3》 笔记摘录
1.list can hold arbitrary objects and can expand dynamically as new items are added. A list is an ...
- 《JAVA与模式》之门面模式
<JAVA与模式>之门面模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述门面(Facade)模式的: 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的 ...
- 《Dare To Dream》第七次作业:团队项目设计完善&编码测试
任务一:团队项目<软件设计方案说明书>Github链接:https://github.com/Sophur/Team-Project 任务二:项目集成开发环境: (1)JSP技术 JSP( ...
随机推荐
- Django项目BBS博客论坛
BBS 项目开发逻辑梳理 第一步:先进行数据库设计 数据库设计规则是: 1.先创建基表:用户表.站点表.文章表.标签表.分类表.文章2标签第三张关系表.点赞点踩表.评论表 2.书写表中的基本含有的字段 ...
- 一起学Vue之计算属性和侦听器
概述 在Vue开发中,模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.当你想要在模板中多次引用相同表达式时,就会更加难以处理.所以,对于任何复 ...
- Linux中防火墙命令
#启动 systemctl start firewalld #开机启动 systemctl enable firewalld #停止 systemctl stop firewalld #禁 ...
- CodeForces - 519D(思维+前缀和)
题意 https://vjudge.net/problem/CodeForces-519D 给定每个小写字母一个数值,给定一个只包含小写字母的字符串 s,求 s 的子串 t 个数,使 t满足: 首位字 ...
- Jupyter修改设置
下载完anaconda后Jupyter默认目录是用户目录,默认浏览器是IE,让有强迫症的我有点难受,所以把它的默认目录和浏览器修改一下. 首先运行一下jupyter notebook --genera ...
- 避免网络爬虫IP被封的策略
背景 这两天一直在搞Java网络爬虫作为Java课程设计,目标是爬取豆瓣电影top250的影评,之后可能还需要进行情感分析,当然这就不是爬虫的内容了.我的爬虫程序在一开始只是一个页面一个页面的爬取信息 ...
- PHP服务化搭建之nginx动静分离实战
如有什么问题可以加群交流:647617935 什么是动静分离 动静分离:将项目中的CSS,JS,HTML,JPG'.等静态资源和 PHP等动态资源分开处理的一种方式 动静分离优点 不同的文件由不同类型 ...
- 打包vue文件,上传到服务器
主要步骤: 1. npm run build生成dist文件夹 2. 将dist文件夹上传到服务器上 3. 服务器上配置nginx,访问路径指向dist文件夹下的index.html,这样当访问ngi ...
- Cesium 加载 gltf 模型
var viewer = new Cesium.Viewer('cesiumContainer', { /*帮助*/ navigationHelpButton: true, baseLayerPick ...
- MongoDB 中聚合统计计算--$SUM表达式
我们一般通过表达式$sum来计算总和.因为MongoDB的文档有数组字段,所以可以简单的将计算总和分成两种:1,统计符合条件的所有文档的某个字段的总和:2,统计每个文档的数组字段里面的各个数据值的和. ...