专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 解析Tomcat体系结构

解析Tomcat体系结构

更新时间:2020-12-01 17:47:18 来源:动力节点 浏览1130次

Tomcat是一个世界上广泛使用的支持jsp和servlets的Web服务器,作为一个免费的开放源代码的Web 应用服务器,Tomcat仍拥有稳定的性能和先进的技术,这离不开Tomcat合理的体系结构。本文我们就来解析一下Tomcat体系结构

 

目前,Tomcat服务器支持Servlet 2.5和JSP 2.1的规范,Tomcat服务器本身是由一组嵌套的层次和组件组成,一般可分为以下4类,分别为顶级组件,连接器类组件,容器类组件 被嵌套类(nested)组件,下面一起来了解这些组件,从而进一步理解Tomcat体系结构。

 

1.顶级组件

顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系(如,Server、Service);

(1).服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。

 (2).服务(service):一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

 

2.连接器类组件

连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器;

连接器(connectors):负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。

 

3.容器类组件容器:包含一组其它组件,如Engine、Host、Content;

(1).Engine:引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

 

(2).Host:主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。

 

(3).Context:Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

 

4.被嵌套类(nested)组件

被嵌套的组件:位于一个容器当中,但不能包含其它组件(如,Realm(用户账户数据库)、valve(基于用户的认证)、logger(记录日志));

这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其它组件,但有些却可以由不同层次的容器各自配置。

 

(1) .阀门(Valve):用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

 

(2) .日志记录器(Logger):用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

 

(3) .领域(Realm):用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

 

 以上就是Tomcat体系结构,总体来看Tomcat体系结构并不复杂。那么,这么简单的体系结构是怎么发挥其作用达到Tomcat服务器的整体应用效果的呢?想要知晓答案的小伙伴请移步到本站的Tomcat服务器教程


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>