Tomcat架构探究
Tomcat是基于组件的服务器,它的构成组件都是可配置的,Tomcat各组件是在
1.server组件
监听8005端口,接收关闭Tomcat的SHUTDOWN命令。一个Server实例就是一个JVM。
2.service组件
用于关联连接器(Connector)和引擎(Engine);一个service里面包含一个引擎和一个或多个连接器。
3.Connector组件
每个连接器有一个特定的端口和协议,它接收入站请求交给引擎处理,也将引擎处理结果交给客户。连接器类型有:
Http Connector:基于HTTP协议,负责建立HTTP连接。它又分为BIO Http Connector与NIO Http Connector两种,后者提供非阻塞IO与长连接Comet支持。 AJP Connector:基于AJP协议,AJP是专门设计用于Tomcat与HTTP服务器通信定制的协议,能提供较高的通信速度和效率。如与Apache服务器集成时,采用这个协议。 APR HTTP Connector:用C实现,通过JNI调用的。主要提升对静态资源(如HTML、图片、CSS、JS等)的访问性能。现在这个库已独立出来可用在任何项目中。由于APR性能较前两类有很大提升,所以目前是Tomcat的默认Connector。4.Engine组件
defaultHost:Tomcat支持基于FQDN的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的Host组件来实现;但如果此引擎的连接器收到一个发往非非明确定义虚拟主机的请求时则需要将此请求发往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名称中至少要有一个跟defaultHost定义的主机名称同名;
name:Engine组件的名称,用于日志和错误信息记录时区别不同的引擎;
Engine容器中可以包含Realm、Host、Listener和Valve子容器。
5.host组件
位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机。
6.Context组件
一个Context定义用于标识tomcat实例中的一个Web应用程序。
7.Realm组件
一个Realm表示一个安全上下文,它是一个授权访问某个给定Context的用户列表和某用户所允许切换的角色相关定义的列表。因此,Realm就像是一个用户和组相关的数据库。定义Realm时惟一必须要提供的属性是classname,它是Realm的多个不同实现,用于表示此Realm认证的用户及角色等认证信息的存放位置。
8.Value组件
Valve类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context和Web应用程序的某资源之间。一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序。
当前文章:Tomcat架构探究
标题路径:http://pwwzsj.com/article/cgjssp.html