快速业务通道

Tomcat5启动流程与配置详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
ine

Pipleline是Valve的集合,当invoke方法被调用时,它会按指定的顺序调用Valve,它总是要求有一个Valve必须处理传递的request(一般是最后一个)并产生response,否则就把request传递到下一个Valve。

一般一个容器仅绑定一个Pipleline实例,一般说来容器会把处理request的功能封装到一个容器绑定的Valve里(这个Valve应该在Pipleline最后被执行)。为了完成这个功能,Pipleline提供了setBasic()方法以保证Valve被最后执行,而其他Valve按顺序被调用。

4.6 org.apache.catalina.Valve

Valve是被绑定在一个Container上的请求处理组件,一组Valve被按顺序绑定在一个Pipleline上。

一个Valve可能按照一定的顺序执行下面的动作:

*1.检查并且(或者)修改指定的Request和Response属性。

*2.检查Request属性,生成相应的Response并返回控制权到调用者。

*3.检查Request和Reponse属性,包装这些对象并增强它们的功能,然后把它们传到下一个组件。

*4.如果相应的Response没有被产生(并且控制权也没有被返回)调用Pipleline上的下一个Valve(如果有)通过方法context.invokeNext()。

*5.检查(但不修改)Response属性(调用后面的Valve或Container产生的)。

Valve一定不能作下面的事情:

*1.改变Request的一些属性(Change request properties that have already been used to direct the flow of processing control for this request)。

*2.创建一个已经被创建并且已经被传递的Response。

*3.在调用invokeNext()方法并返回后修改包含Response的HTTP Header信息。

*4.在invokeNext()调用返回后在绑定Response上的输出流上作任何调用。

*@param request 将被处理的Request

*@param response 将被创建的Response

*@param context 被用来调用下一个Valve的Valve Context

4.7 org.apache.catalina.ValveContext

一个ValveContext是这样一种机制:一个Valve可以触发下一个Valve的调用,而不必知道机制的内在实现。

4.8 org.apache.catalina.Engine

Engine是一个容器,是Cataline的Servlet的入口点。当发布一个连接到Web Server的Cataline时可能不使用Engine,因为Connectior将使用Web Server的资源决定使用哪个Context处理Request。附属于Engine的子容器根据Engine实现的不同可能是Host或Context(单个Servlet Context)。如果使用了Engine,在Cataline的层次中它就是顶层容器,因此setParent()应改抛出IllegalArgumentException异常。

4.9 org.apache.catalina. Host

Host是一个容器,它代表一个虚拟主机。当发布一个连接到Web Server的Cataline时可能不使用Host,因为Connectior将使用Web Server的资源决定使用哪个Context处理Request。Host所附属的父容器通常是Engine,附属于Host的子容器通常是Context(单个Servlet Context)。Host接口里面的方法多数都是关于修改Host属性及设定默认的Context。这里我们不再一一列举。

Tomcat5启动流程与配置详解(7)

时间:2011-03-11 51cto博客 zhangjunhd

4.10 org.apache.catalin. Context

Context是一个容器,它代表一个ServletContext,一个Cataline Engline中的单个的Web Application。Context所附属的父容器是Host,附属于Context的子容器是Wrapper(代表单个Servlet)。Context接口里面多数是关于Web Application的设置的方法,我们可以参考Web.xml文件研究里面的方法,里面多数方法都是如何读取Web.xml文件里的资源。

4.11 org.apache.catalina.Wrapper

Wrapper是一个容器,它代表单个Servlet。Wrapper管理Servlet的生命周期,包括调用init()和destory()方法。Wrapper所附属的父容器是Context,没有附属于Wrapper的子容器,方法addChild()应该抛出IllegalArgumentEx

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号