0
点赞
收藏
分享

微信扫一扫

总结Tomcat的核心组件以及根目录结构

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和JSP容器。

  1. Tomcat的目录结构

    Tomcat的目录结构是由bin、conf、lib、logs、temp、webapps和work七个部分组成。

总结Tomcat的核心组件以及根目录结构_tomcat

1.1 bin目录

    bin是存放服务启动、停止等相关程序和文件的目录,以.sh为后缀的用于Linux操作系统,.bat为后缀的用于Windows操作系统中。

总结Tomcat的核心组件以及根目录结构_虚拟主机_02

1.2 conf目录

    conf是Tomcat的相关配置文件目录,关于配置文件的说明可参见下表。

总结Tomcat的核心组件以及根目录结构_tomcat_03

配置文件名

说明

server.xml

Tomcat服务主配置文件。


web.xml

定义每个webapp以何种方式进行部署才能被访问,其存放位置为WEB-INF/目录中,此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件。



context.xml

用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件。

tomcat-users.xml

用户认证的账号和密*码文件。

catalina.policy

当使用security选项启动tomcat时,用于为tomcat设置安全策略。

catalina.properties

环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数。

logging.properties

Tomcat 日志系统相关的配置,可以修改日志级别和日志路径等。

1.3 lib目录

    lib是库目录,里面为Tomcat服务器运行时所需是要的各种jar依赖包。

总结Tomcat的核心组件以及根目录结构_tomcat_04

1.4 logs目录

    logs是日志文件目录,catalina.out为Tomcat服务日志;localhost.xxx.log为默认主机日志;manager.xxx.log和host-manager.xxx.log分别为webapps/manager和webapps/host-manager部分管理日志;localhost_access_log.xxx.txt为默认主机访问日志。

总结Tomcat的核心组件以及根目录结构_tomcat_05

1.5 temp目录

    temp是临时文件目录。

总结Tomcat的核心组件以及根目录结构_tomcat_06

1.6 webapps目录

    webapps是应用程序和程序部署目录,它的作用类似于httpd服务中的/var/www/html目录,默认的Tomcat主页是放在ROOT子目录下的。该目录也是Tomcat默认的根目录,关于这一目录的结构,笔者放在此篇的第三部分来讲。

总结Tomcat的核心组件以及根目录结构_tomcat_07

1.7 work目录

    work是jsp编译后的结果文件目录,当我们将jsp文件放到webapps/ROOT/目录下时,客户端访问时会自动在work/Catalina/localhost/ROOT/org/apache/jsp目录下生成class和java文件,相当于做了缓存,第一次访问时会比较慢,因此建议在用户访问前做好预热工作。如果是进行版本升级,记得要将jsp目录下的数据清空,否则用户查看到的还是旧的内容。

总结Tomcat的核心组件以及根目录结构_xml_08


  1. Tomcat组件

2.1 组件分层和分类

    Tomcat组件分层和分类包括以下几个:

    ①顶级组件:Server,代表整个Tomcat容器,一台主机可以启动多tomcat实例,需要确保端口不要产生冲突;

    ②服务类组件:Service,实现组织Engine和Connector,建立两者之间关联关系, service 里面只能包含一个Engine;

    ③连接器组件:Connector,有HTTP(默认端口8080/tcp)、HTTPS(默认端口8443/tcp)、AJP(默认端口8009/tcp)协议的连接器,AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议;

    ④容器类:Engine、Host(虚拟主机)、Context(上下文件,解决路径映射)都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序;

    ⑤内嵌类:可以内嵌到其他组件内,valve、logger、realm、loader、manager等,以logger举例,在不同容器组件内分别定义。

    ⑥集群类组件:listener、cluster。

2.2 Tomcat核心组件

总结Tomcat的核心组件以及根目录结构_xml_09

    上图为Tomcat内部构成图,由Tomcat的6个核心组件组合而成,具体组件及说明请参加下表。

名称

说明

Server

服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个。

Service

服务,用来组织Engine和Connector的对应关系,一个service中只有一个Engine。

Connector

负责客户端的HTTP、HTTPS、AJP等协议连接,一个Connector只属于某一个Engine。

Engine

即引擎,用来响应并处理用户请求,一个Engine上可以绑定多个Connector。

Host

即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分。

Context

应用的上下文,配置特定url路径映射和目录的映射关系:url => directory。

2.3 核心组件间的关系

    ①Tomcat启动一个Server进程,可以启动多个Server,即tomcat的多实例, 但一般只启动一个。

    ②Server通过创建一个Service来提供服务,可以创建多个Service,但一般也只创建一个。每个Service中,是Engine和其连接器Connector的关联配置。

    ③可以为这个Service提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口,其作用就是处理来自客户端的不同的连接请求或响应。

    ④Service内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host。Engine对请求头做了分析,将请求发送给相应的虚拟主机;如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机;Engine上的缺省虚拟主机可以修改。

    ⑤Host定义虚拟主机,虚拟主机有name名称,通过名称匹配。

    ⑥Context 定义应用程序单独的路径映射和配置。


  1. Tomcat根目录结构

    Tomcat中默认网站根目录是$CATALINA_BASE/webapps/,在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。以下笔者通过与Apache服务的对比来看Tomcat的根目录结构情况。

3.1 默认页面

    以Apache服务为例,默认的网站首页是放在/var/www/html下面的,客户端访问时会自动在该目录下寻找默认页面。

总结Tomcat的核心组件以及根目录结构_xml_10

总结Tomcat的核心组件以及根目录结构_虚拟主机_11

    Tomcat则是将默认的页面放在ROOT子目录下,相当于Tomcat把自身的默认网站也当成了一个APP,此时客户端去访问时,默认直接通过ROOT这个子目录去寻找默认页面。

总结Tomcat的核心组件以及根目录结构_xml_12

总结Tomcat的核心组件以及根目录结构_tomcat_13

3.2 不同服务部署

    假设现在有两个服务test1和test2,在Apache服务中,我们可以在将服务部署在/var/www/html目录下,并且两个服务是保持平级的关系。

总结Tomcat的核心组件以及根目录结构_xml_14

总结Tomcat的核心组件以及根目录结构_tomcat_15

总结Tomcat的核心组件以及根目录结构_tomcat_16

    在Tomcat中,我们也可以将两个服务部署在ROOT目录下。

总结Tomcat的核心组件以及根目录结构_tomcat_17

总结Tomcat的核心组件以及根目录结构_虚拟主机_18

总结Tomcat的核心组件以及根目录结构_tomcat_19

    但不同的是,我们还可以直接将服务部署在webapps目录下,例如现在有个test3的服务,我们可以之间放在webapps目录下保持与ROOT目录的平级关系。

总结Tomcat的核心组件以及根目录结构_tomcat_20

总结Tomcat的核心组件以及根目录结构_xml_21

3.3 不同目录级别对比

    如果同时存在一个在webapps和webapps/RPPT目录下,处于webapps目录下的服务会优先生效。例如笔者这边在webapps目录下创建一个test2的服务,在webapps/ROOT目录下创建test3服务,test2和test3服务同时存在与webapps和webapps/ROOT目录下,客户端访问时,都只会显示webapps目录下的服务。

总结Tomcat的核心组件以及根目录结构_tomcat_22

总结Tomcat的核心组件以及根目录结构_tomcat_23

总结Tomcat的核心组件以及根目录结构_虚拟主机_24


  1. JSP WebApp目录结构

    $CATALINA_BASE/webapps下面的每个目录对应的WebApp,可能有以下子目录,但下面子目录是非必须的:

    ①主页配置:默认按index.html→index.htm→index.jsp的顺序查找主页文件;

    ②WEB-INF/:当前目录WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml配置文件;

    ③META-INF/:类似于WEB-INF,也是私有资源的配置信息,和WEB-INF/目录一样浏览器无法访问;

    ④classes/:类文件,当前webapp需要的类;

    ⑤lib/:当前应用依赖的jar包。

举报

相关推荐

0 条评论