Tomcat架构简述

Tomcat架构简述

概述

Tomcat是一个web应用服务器,也可以称作是jsp/servlet容器,Tomcat不仅可以相应web应用而且自身集成了http服务,是一个高效的web服务器。
Tomcat虽然本身的结构很复杂,但是同时Tomcat也高度的模块化,所以从结构图上来看Tomcat的设计非常的简洁。

由上图可以看出来一个应用服务器(Tomcat server)可以拥有多个service服务,一个service服务中有多个Connector组件和一个Container组件以及多个其他组件,例如日志,Session,命名等,其中Connector和Container这两个组件是Tomcat的核心组件,下面将大致一一介绍每个组件的作用。

Server服务器

server服务器指Tomcat容器。

Service服务

service服务指的就是Server服务器能提供的服务,比如http服务,在Tomcat里就是指web服务。

Jasper

Jasper组件负责jsp页面的解析,jsp属性的验证,同时也负责将jsp页面动态转换为java代码并且编译成class文件。

Naming

Naming组件负责管理相关资源,包括数据库连接池,EJB,mail等通过JNDI获取的内容。

Logging

Logging组件负责记录相关日志,包含访问错误信息等。

Session

Session组件负责session的管理,序列化反序列化等。

需要重点介绍的是Connector组件和Container组件

Connector

由上面的图我们可以看出来一个Service服务可以包含多个Connector,实际上Tomcat中包含了3个Connector,分别对应HTTP请求,HTTPS请求以及AJP请求。那么Connector在Tomcat中到底扮演了什么样的角色呢?Tomcat中的Connector负责的任务就是接受请求,创建request和response,解析请求中数据,将数据封装到request中,最后将request和response作为参数传递给Container对象!

由于不同协议规则不同,解析起来也是不一样的,所以需要多个Connector。

Container

Container实际上只是容器的概称。而Tomcat中包含有多个Container。那么Container的作用是什么呢?Container的作用就是接收Connector传递的request和response,对request和response进行了一些过滤封装,同时调用对应的Servlet去处理该request,最后将处理完成后的结果封装到response中返回给客户端!

每个Container从大到小分别为Engine-->Host-->Context-->Wrapper

  1. Engine容器代表整个Catalina servlet引擎

  2. Host容器表示一个虚拟主机,Tomcat自带的是一个叫localhost的主机

  3. Context容器表示一个WEB应用程序

  4. Wrapper表示一个独立的Servlet

对于一个Engine可以包含多个Host,Tomcat自带了一个叫做localhost的Host容器,一个Host容器可以包含多个Context,一个Context可以包含多个Wrapper。

是不是感觉这几个单词很熟悉,是的!在Tomcat中我们可以使用Tomcat默认提供的这些容器,也可以在CATALINA_HOME/conf下的server.xml中配置,而这几个单词正是对应server.xml中的各个配置选项的名称!

在下面的几个章节我们将逐渐深入到各个组件中去探索Tomcat是如何工作的。

posted @ 2016-05-08 00:52  coldridgeValley  阅读(3675)  评论(2编辑  收藏  举报