How Tomcat Works 5:容器

容器是一个处理用户servlet 请求并返回响应给web 用户的模块。

org.apache.catalina.Container 接口定义了容器的形式,主要有四种:

  1. Engine (引擎):表示整个catalina 的servlet 引擎
  2. Host (主机):表示一个拥有数个上下文的虚拟主机
  3. Context (上下文):表示一个Web应用,一个context 包含一个或多个wrapper
  4. Wrapper (包装器):表示一个独立的servlet

连接器如何使用容器

HttpConnector connector = new HttpConnector();
SimpleContainer container = new SimpleContainer();
connector.setContainer(container);

连接器设置完容器后,就可以调用容器的invoke 方法。

一个容器可以有一个或多个低层次上的子容器。例如,一个Context 有一个或多个wrapper,而wrapper 作为容器的最底层,不能包含子容器。

更有意思的是,Container 接口被设计成 Tomcat 管理员可以通过server.xml 文件配置来决定其工作方式的模式。

主要通过流水线pipeline 和 一系列阀门valve 来实现

pipelining tasks 流水线任务

跟过滤器一样,一个阀门可以操作传递给它的request 和 response 方法。让一个阀门完成了处理,则进一步 处理流水线中的下一个阀门,基本阀门总是在最后才被调用。

前面说到连接器是调用容器的invoke 方法,那Container 接口的 invoke 方法实现是:

public void invoke (Request request,Response response){
        pipeline.invoker(request,response);
}

流水线是通过valveContext 来保证添加给流水线的阀门全部调用。valveContext 中最重要的方法是invokeNext

The Pipeline Interface 流水线接口

流水线pipeline 中的第一个接口就是我们上面提到的invoke 方法,这个方法会唤醒流水线的阀门。此外,流水线接口允许你添加一个新的阀门或者删除一个阀门。

The valve interface 阀门接口

阀门组件负责处理请求,主要有两个方法,invoke 和 getInfo 方法。

getInfo 方法返回阀门信息。

The valveContext Interface 阀门上下文接口

阀门上下文接口有两个接口,一个是invokeNext ,在就是getInfo 方法会返回阀门上下文信息。

The Contained Interface Contained 接口

The Wrapper Interface Wrapper 接口

包装器接口。一个包装器是表示一个独立servlet 定义的容器。包装器接口继承了 Container 接口,并且添加了几个方法。

The Context Interface 上下文 接口

一个context在容器中表示一个web应用,一个context 通常含有一个或多个包装器作为子容器。

主要方法是 addWrapper ,createWrapper 等方法。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值