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-11-06 09:55:54