2005-09-06
2、tomcat的消息传递。
这部分的内容也同上部分,在http://www.huihoo.org/apache/tomcat/和tomcat的文档http://jakata.apache.org/tomcat-docs/上已经讲得很清楚。我主要对其进行理解和消化,并从中总结一些东西来,为我所用。
这部分中最困难的是Pipeline部分,即数据流在各个容器中的传递,依靠的是Pipeline这个东西来来进行消息的传递的实现,这样也可以进行消息传递解偶,而且又可以随时加入Valve,具体即插即用的作用。这个Value有点性Servlet编程中的Filter,也就是类似Filter的功能,可以在需要的时候加入安全控制等功能。
这个Pipeline模式主要由三个接口来实现。Pipeline、Valve、ValveContext。
Pipeline主要实现管道功能,为Value提供运行起点,其invoke方法为管道的起点。
Value主要实现过滤器或拦截器的作用,其实现类也是具体的拦截者,当Valve实现具体的行为后,一般仍会调用Pipeline的invoke方法,将控制流交给Pipeline。
ValveContext主要为Value的正常运行提供一个平台,保存着所有的Value的一个引用,也是决定具体调用哪个Value的决定者,但一般情况下都是按顺序调用Value的invoke()方法。
Pipeline的接口如下:
[code:1]public interface Pipeline {
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);
}[/code:1]
Value的接口如下:
[code:1]public interface Valve {
public String getInfo();
public void invoke(Request request, Response response,
ValveContext context)
throws IOException, ServletException;
}[/code:1]
ValueContext的接口如下:
[code:1]public interface ValveContext {
public String getInfo();
public void invokeNext(Request request, Response response)
throws IOException, ServletException;
}[/code:1]
这部分中最困难的是Pipeline部分,即数据流在各个容器中的传递,依靠的是Pipeline这个东西来来进行消息的传递的实现,这样也可以进行消息传递解偶,而且又可以随时加入Valve,具体即插即用的作用。这个Value有点性Servlet编程中的Filter,也就是类似Filter的功能,可以在需要的时候加入安全控制等功能。
这个Pipeline模式主要由三个接口来实现。Pipeline、Valve、ValveContext。
Pipeline主要实现管道功能,为Value提供运行起点,其invoke方法为管道的起点。
Value主要实现过滤器或拦截器的作用,其实现类也是具体的拦截者,当Valve实现具体的行为后,一般仍会调用Pipeline的invoke方法,将控制流交给Pipeline。
ValveContext主要为Value的正常运行提供一个平台,保存着所有的Value的一个引用,也是决定具体调用哪个Value的决定者,但一般情况下都是按顺序调用Value的invoke()方法。
Pipeline的接口如下:
[code:1]public interface Pipeline {
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);
}[/code:1]
Value的接口如下:
[code:1]public interface Valve {
public String getInfo();
public void invoke(Request request, Response response,
ValveContext context)
throws IOException, ServletException;
}[/code:1]
ValueContext的接口如下:
[code:1]public interface ValveContext {
public String getInfo();
public void invokeNext(Request request, Response response)
throws IOException, ServletException;
}[/code:1]
- 16:26
- 浏览 (604)
- 评论 (0)
- 分类: tomcat study
- 相关推荐
发表评论
- 浏览: 104578 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
acegi的MethodSecurityIn ...
少了ehcache的jar包。
-- by bulain -
acegi的MethodSecurityIn ...
你好,我才开始看acegi,把你的这个例子运行了一下,出错了,可不可以帮我看一下 ...
-- by yuen -
学习acegi-security
好,就是没有结合配置说明,
-- by cljspn -
学习acegi-security
不错!!清晰
-- by wrong1111 -
学习acegi-security
好文!! 在我见到Acegi最清淅的一个,如果结合配置再说明一下。肯定是很清源很 ...
-- by liuyxit






评论排行榜