Tomcat架构探究

一 体系架构

Tomcat是基于组件的服务器,它的构成组件都是可配置的,Tomcat各组件是在confserver.xml文件中配置,其配置文件内容如下:

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的尖山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

二 组件分析

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