《how tomcat work》 搬运工 Chapter 5: Container

Containner的作用是将请求送到servlet中,然后产生response给客户端。在tomcat 4中,container有四种:Enginer,Host,Context,和 Wrapper。这个章节主要是简单介绍下Context和Wrapper,其中的Context和Wrapper都是自定义比较简单的。

Engine:代表整个Catalina servlet的引擎。

Host:代表一个拥有多个context的虚拟主机。

Context:代表一个网站,一个Context拥有一个或多个Wrapper

Wrapper:代表独立的servlet。

Pipelining Tasks


变量pipeline的invoke方法。pipeline里有一个Basevalue,这是一个必定触发的value,而pipeline还可以添加

多个value,当调用pipeline的invoke方法是,会触发每一个value。而value的顺利触发则靠valuecontext来维

持。

Contanier的invoke方法

public void invoke(Request request, Response response) throws IOException, ServletException { pipeline.invoke(request, response); }

Pipeline的interface

public Valve getBasic();
public void setBasic(Valve valve);
public void addValve(Valve valve);
public Valve[] getValves();
public void invoke(Request request, Response response) throws IOException, ServletException; public void removeValve(Valve valve);

Valve interface

public String getInfo();
public void invoke(Request request, Response response, ValveContext context) throws IOException, ServletException;

ValveContext的interface

public void invokeNext(Request request, Response response) throws IOException, ServletException;public String getInfo();

Context和Wrapper

Context里有一个Hash类型的children,这是Wrapper的一个哈希表。Context通过他的pipeline的basevalue根据request请求,来查找适合的wrapper,然后调用wrapper的invoke方法来处理请求。wrapper的invoke中又调用wrapper中的pipeline的basevalue,来创建servlet,然后就service(req,res)了。

时间: 2024-08-27 17:44:02

《how tomcat work》 搬运工 Chapter 5: Container的相关文章

《how tomcat work》 搬运工 Chapter 15: Digester

在之前的章节都是通过Bootstrap类来初始化connector,context,wrapper. 而且手动来绑定它们的关系. connector.setContainer(context); 或者手动设置实例的属性 context.setPath("/myApp") ; context.setDocBase("myApp"); 在tomcat中,是用web.xml来设置的.而digester是一个开源的库,可以读取xml,通过xml来加载类,实例化. Diges

《how tomcat work》 搬运工 Chapter 14 Server and Service

之前的章节是将container和connector联系了在一起,但是connector只能和一个端口相连接.而且,之前的application都缺少了一个开启服务,关闭服务的接口.这章节就是介绍tomcat的server和service.server和service就是方便了启动. Server  org.apache.catalina.Server接口代表了catalinaservlet的server.server整合了将connector和container的开启和关闭. public i

《how tomcat work》 搬运工 Chapter 11:StandardWrapper

tomcat 4和5中有四种container,engine,host,context,wrapper,之前已经简单介绍过自己编写的simpleContext,simpleWrapper.这章节就是介绍catalina的StandardWrapper. 首先wrapper是代表一个servlet,所以,wrapper的作用是,servlet类的加载,servlet的信息,还有进入servlet的fiter的信息,还有fiter的加载,fiter的chain. 1.servlet可以继承javax

《how tomcat work》 搬运工 Chapter 9: Session Management

Catalina版本的Tomcat通过manager板块来提供session管理,manager通常是和context联系在一起,就是context类里会有一个manager实例. Session interface public interface Session { public static final String SESSION_CREATED_EVENT = "createSession"; public static final String SESSION_DESTRO

Tomcat总体架构:Server+Container 设计+Lifecycle等

2.1总体设计 为了使读者能更深刻地理解Tomcat的相关组件概念,我们将采用一种启发式的讲解方式来介 绍Tomcat的总体设计.从如何设计一个应用服务器开始,逐步完善,直至最终推导岀Tomcat的整体架构. 2.1.1 Server 从最基本的功能来讲,我们可以将服务器描述为这样一个应用: 它接收其他计算机(客户端)发来的请求数据并进行解析,完成相关业务处理,然 后把处理结果作为响应返回给请求计算机(客户端). 通常情况下,我们通过使用Socket监听服务器指定端口来实现该功能.按照该描述,一

how tomcat work 搬运工(一)

charter 1 基本的服务端接收请求并处理 包和类 HttpServer  是主函数入口,通过await()方法新建ServerSock 对象实例来绑定端口,接收请求,通过请求来新建 Request 和 Response 对象实例, package com.howtomcatwork.xy; import java.net.Socket; import java.net.ServerSocket; import java.net.InetAddress; import java.io.Inp

How Tomcat Works - A Simple Servlet Container

这一章和第一章的区别就是对servlet的支持.我们看下是怎么做的. 1)首先Response和Request这两个类分别实现了ServletResponse和ServletRequest接口,这两个接口和后面用到的Servlet接口都在javax.servlet这个package下面,需要添加servlet-api这个第三方依赖到classpath才能访问,这里用的是servlet-api-2.5.所有新加的方法除了Response.getWriter() 都没有任何处理,因为暂时没有用到.

Tomcat 安装步骤

转至元数据起始 1.先下载自己所需要的tomcat包:apache-tomcat-7.0.78.tar.gz,官网下载地址: http://tomcat.apache.org/ 2.下载之后移动到linux环境下面 3.上传好了之后将包移动到一个目录下面: cp apache-tomcat-7.0.78.tar.gz /usr/local 4.位置移动完成之后开始解压 tar xvf apache-tomcat-7.0.78.tar.gz 5.解压完成之后开始配置环境变量: cd /etc,然后

docker技术部署tomcat

一.使用 Docker 搭建 Tomcat 运行环境 1 Docker与虚拟机   2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2.2 安装Docker # yum install docker 可使用以下命令,查看 Docker 是否安装成功: # docker version 若输出了 Docker 的版本号,则说明安装成功了,可通