摘要:Container是容器接口.我们知道请求到达连接器,经过一些预处理,调用容器的方法.来真正地处理请求.Container也就是servlet容器是用来处理请求servlet资源,并为Web客户端填充response对象的模块.在Tomcat中有4种类型的容器.分别是Engine,Host,Context,Wrapper. org.apache.catalina.Container这个接口有着很详
Container是容器接口.我们知道请求到达连接器,经过一些预处理,调用容器的方法.来真正地处理请求.Container也就是servlet容器是用来处理请求servlet资源,并为Web客户端填充response对象的模块.在Tomcat中有4种类型的容器.分别是Engine,Host,Context,Wrapper. org.apache.catalina.Container这个接口有着很详细的类注释,基本上都把它的作用给说的很清楚.大意是容器是可以执行从客户端收到的请求.并根据这些请求返回响应对象,它支持管道阀门.这里说的管道是org.apache.catalina包下的Pipeline而阀门指的是Value.对于容器接口它的4个概念层次分别是: Engine:表示Tomcat的整个Servlet引擎. Host:表示包含一个或者多个Context容器的虚拟主机 Context:表示一个Web应用程序. Wrapper:表示一个独立的Servlet. 这4个接口的都有一个标准的实现,对应于org.apache.catalina.core下的StandardEngine,StandardHost,StandardContext和StandardWrapper.有一点需要注意的是Container的实现类都继承自ContainerBase抽象类. 此外ContainerBase也是继承自LifeCycle的类层次.因此它也必须实现一些生命周期方法.这些方法可以让StandardService等对其进行生命周期的管理.
public void invoke(Request request, Response response) throws IOException, ServletException { pipeline.getFirst().invoke(request, response); } 上述是ContainerBase的invoke方法.也就是连接适配器转发请求所调用的方法.可以很清楚的看出这个调用是委托给pipeline里面的阀来执行的.后续将对StandardPipeline进行解读.此外容器还包含了一些组件如日志组件(Logger),管理器(Manager),领域(Realm)和资源(Resources).
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28