《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)了。

 

转载于:https://www.cnblogs.com/xuyung/p/4715405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值