您的位置:首页 > 运维架构 > Tomcat

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

2015-08-09 16:51 471 查看
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)了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: