Tomcat 组件
Posted logan12138
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的声明周期。
组件详情
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。
以上是关于Tomcat 组件的主要内容,如果未能解决你的问题,请参考以下文章