读书人

Tomcat4 容易wrapper责任链

发布时间: 2012-11-08 08:48:11 作者: rapoo

Tomcat4 简单wrapper责任链
TOMCAT4容器的责任链

public class SimplePipeline implements Pipeline {  public SimplePipeline(Container container) {    setContainer(container);  }  protected Valve basic = null;    protected Container container = null;  protected Valve valves[] = new Valve[0];  public void addValve(Valve valve) {    if (valve instanceof Contained)      ((Contained) valve).setContainer(this.container);    synchronized (valves) {      Valve results[] = new Valve[valves.length +1];      System.arraycopy(valves, 0, results, 0, valves.length);      results[valves.length] = valve;      valves = results;    }  }  public void invoke(Request request, Response response)    throws IOException, ServletException {        (new SimplePipelineValveContext()).invokeNext(request, response);  }  protected class SimplePipelineValveContext implements ValveContext {    protected int stage = 0;    public void invokeNext(Request request, Response response)      throws IOException, ServletException {      int subscript = stage;      stage = stage + 1;         if (subscript < valves.length) {        valves[subscript].invoke(request, response, this);      }      else if ((subscript == valves.length) && (basic != null)) {        basic.invoke(request, response, this);      }      else {        throw new ServletException("No valve");      }    }  }}



读书人网 >编程

热点推荐