Tomcat 组件


首先,从tomcat官网下载9.0.27的源码包,然后再在对应目录里执行 ant 命令,会下载到所需的依赖。将源码导入的 eclipse 里,将 ant 下载的依赖 jar 包添加到 buildPath 里,再将 jre/lib/jce.jar 也添加进去,执行 Bootstrap 的 main 方法启动 tomcat 。

组件

    • Server接口是“服务器组件”,它负责服务器的启动、终止。
    • Service接口是“服务组件”,它负责load连接器,把连接器组件连接容器中。
    • Engine接口是servlet引擎,它负责初始化/启动下属容器,以及初始化/启动连接器组件。
    • Host接口是虚拟主机组件,它负责拦截过滤请求,它的生命周期监听器HostConfig会对war文件等进行部署。
    • Context代表一个具体的Web应用程序,它的生命周期监听器ContextListener会对属性进行配置。
    • Wrapper代表一个具体的Servlet,它负责管理对应Servlet的声明周期。

组件详情 

Tomcat结构

Server

代表整个Catalina Servlet容器。Server并不是一个Container,它没有实现Container接口或者继承ContainerBase类,但它有生命周期。Server用来启动、停止Catalina,它的address属性指明了监听命令的地址, port 属性指明了监听命令的端口(默认是代码里的8005)。默认实现类是StandardServer

 

Service

可以让多个Connector共享一个Container(亦即Engine)。Service并不是一个Container,它也只实现了Lifecycle接口。一个Server可以有多个Service,Service之间是独立的,只是共享JVM和class path上的Jar。Service的默认实现类是StandardService。

 

容器

Tomcat的容器共有4个,分别是Engine、Host、Context和Wrapper。上层容器对下层容器都是一对多的关系。

Engine

 

 Engine代表整个Catalina Servlet引擎。Engine可以1)为一个单独的请求设置处理器;2)支持多个虚拟主机(Host)。Engine的下级容器可以是Host也可以是Context,但一般不用Engine来部署web 应用(Context)。由于Engine是最上层的容器,所以调用其setParent方法会抛出IllegalArgumentException。其默认实现类是StandardEngine.

Host

 代表一个虚拟主机。其下层容器通常是Context。其默认实现类是StandardHost。

Context

 

 代表Servlet的上下文,亦即一个web应用程序。其默认实现类是StandardContext.

 ContextBind接口用来更改一个web应用程序的ClassLoader。

Wrapper

是对一个单独Servlet的包装,负责管理Servlet的生命周期及分配。其默认实现类是StandardWrapper。

猜你喜欢

转载自www.cnblogs.com/Logan12138/p/12003129.html