在上一篇的文章中看了StandardService的实现。。。这里可以将它要做的事情总结如下:
(1)管理其拥有的container对象,以及其拥有的connector对象,同时service只能有一个container对象,可以拥有多个connector对象。。。
(2)StandardService对象同时还要处理request的map问题,它有maplistener和mapper,maplistener用于监听container对象,从而增加mapper里面的信息。。。
上面说service只能有一个Container对象,这个container对象其实一般就是Engine对象,而Engine对象一般都是使用StandardEngine的。。。但是在具体的分析StandardEngine之前呢,先来看看Valve的设计。。。
在以前分析Container的时候提到过,每个container对象都有一个pipeline对象用于处理请求,而pipeline其实则是一个valve的链表,它是用valve对象来具体的处理请求的。。。
这里就先来看看valve接口的设计吧:
//value对象是与container相关联的处理请求的组件,一系列的value组成了pipeline
public interface Valve {
public Valve getNext(); //返回pipeline的下一个value对象,在pipeline上面,valve对象组成了一个链表
public void setNext(Valve valve); //设置下一个value对象
//执行一些周期的工作
public void backgroundProcess();
//处理request与response
public void invoke(Request request, Response response)
throws IOEx