tomcat 工作原理及目录文件介绍
1 、 tomcat 背景
自从 JSP 发布之后,推出了各式各样的 JSP 引擎。 Apache Group 在完成 GNUJSP1.0 的开发以后,开始考虑在 SUN 的 JSWDK 基础上开发一个可以直接提供 Web 服务的 JSP 服务器,当然同时也支持 Servlet, 这样 tomcat 就诞生了。 tomcat 是 jakarta 项目中的一个重要的子项目,其被 JavaWorld 杂志的编辑选为 2001 年度最具创新的 java 产品,同时它又是 sun 公司官方推荐的 servlet 和 jsp 容器,因此其越来越多的受到软件公司和开发人员的喜爱。 servlet 和 jsp 的最新规范都可以在 tomcat 的新版本中得到实现。其次, tomcat 是完全免费的软件,任何人都可以从互联网上自由地下载。 tomcat 与 Apache 的组合相当完美。
2 、 tomcat Server 处理一个 http 请求的过程
假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp
1 、请求被发送到本机端口 8080 ,被在那里侦听的 CoyoteHTTP/1.1 Connector 获得
2 、 Connector 把该请求交给它所在的 Service 的 Engine 来处理,并等待来自 Engine 的回应
3 、 Engine 获得请求 localhost/wsota/wsota_index.jsp ,匹配它所拥有的所有虚拟主机 Host
4 、 Engine 匹配到名为 localhost 的 Host (即使匹配不到也把请求交给该 Host 处理,因为该 Host 被定义为该 Engine 的默认主机)
5 、 localhost Host 获得请求 /wsota/wsota_index.jsp ,匹配它所拥有的所有 Context
6 、 Host 匹配到路径为 /wsota 的 Context (如果匹配不到就把该请求交给路径名为 "" 的 Context 去处理)
7 、 path="/wsota" 的 Context 获得请求 /wsota_index.jsp ,在它的 mapping table 中寻找对应的 servlet
8 、 Context 匹配到 URLPATTERN 为 *.jsp 的 servlet ,对应于 JspServlet 类
9 、构造 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet 的 doGet 或 doPost 方法
10 、 Context 把执行完了之后的 HttpServletResponse 对象返回给 Host
11 、 Host 把 HttpServletResponse 对象返回给 Engine
12 、 Engine 把 HttpServletResponse 对象返回给 Connector
13 、 Connector 把 HttpServletResponse 对象返回给客户 browser
3 、 tomcat 目录详细解析
3.1 、 bin 目录
bin 目录主要用来存放 tomcat 的命令,很多环境变量也在此处设置。以 .sh 结尾的代表 Linux 下的命令;以 .bat 结尾的代表 Windows 下的命令。其中 startup.bat 代表 windows 系统下启动 tomcat 的命令; shutdown.bat 代表 Windows 系统下关闭 tomcat 的命令。同理 startup.sh 代表 Linux 下的启动 tomcat 的命令; shutdown.sh 代表 linux 下关闭 tomcat 的命令。详细介绍如下所示。
bin 目录中的脚本说明 |
|
文件名称 |
文件作用 |
catalina.sh |
tomcat 主要脚本,用于启动和关闭 tomcat 服务器 |
startup.sh |
启动运行 tomcat 实例,相当于 catalina.sh start |
shutdown.sh |
停止 tomcat 实例的运行,相当于 catalina.sh stop |
daemon.sh |
tomcat 服务的启动脚本,可以复制到 /etc/init 下使用 |
catalina-tasks.xml |
定义 tomcat 载入的库文件,类文件 |
version.sh |
查看当前 tomcat 的版本信息 |
configtest.sh |
校验 tomcat 配置文件 server.xml 的格式、内容等是否合法、正确 |
setclasspath.sh |
catalina.sh 依赖这个脚本来设置 tomcat 的 classpath 等环境变量 |
digest.sh |
用于生成加密过的 tomcat 用户密码 |
tool-wrapper.sh |
一般和 digest 脚本结合使用 |
bootstrap.jar |
tomcat 启动时所依赖的一个类,在启动 tomcat 时会发现 Using CLASSPATH: 是加载的这个类 |
commons-daemon.jar |
jsvc 工具所依赖的 java 类 |
commons-daemon-native.tar.gz |
jsvc 工具,可以使 tomcat 以守护进程方式运行,需单独编译安装 |
tomcat-juli.jar |
是一款在使用 tomcat 开发时十分关键的一款 jar 包 |
tomcat-native.tar.gz |
使 tomcat 可以使用 apache 的 apr 运行库,以增强 tomcat 的性能需单独编译安装 |
3.2 、 conf 目录
conf 目录主要存放 tomcat 服务器全局配置的各种文件,详见以下说明。
conf 目录中配置文件说明 |
|
catalina.policy |
tomcat 安全机制的配置文件,默认情况下 tomcat 是非安全模式运行的,只有当 tomcat 用 -security 命令行参数启动时这个文件才会被使用,该文件可以配置 tomcat 对文件系统中目录或文件的读、写执行等权限,及对一些内存, session 等的管理权限 |
catalina.properties |
catalina.properties 是 Catalina 的配置文件,主要有安全设置、类加载设置、不需要扫描的类设置、字符缓存设置四大块。配置 tomcat 的 classpath 等 |
context.xml |
tomcat 的默认 context 容器,可被所有的 web 应用程序使用 . 这个文件默认地可以设置到何处访问各 web 应用程序中的 web.xml 文件。 context.xml 在 tomcat 6.0 时从 server.xml 中分离出来,主要用于项目部署的配置。 |
server.xml |
tomcat 中最重要的配置文件 ,也是最常用的一个, 用于对整个容器进行相关的配置, 解析器用这个文件在启动时根据规范 " 创建 " 容器 |
web.xml |
tomcat 的应用程序的部署描述符文件,是所有 Web 项目的缺省配置文件。 |
tomcat-users.xml |
tomcat 的角色 ( 授权用户 ) 配置文件,用于访问 tomcat 管理应用程序时的安全性设置,用 server.xml 中引用的默认的用户数据库域 (UserDatabase Realm) 使用它,所有的凭据都是默认被注释的。 |
tomcat-users.xsd |
定义了 tomcat-users.xml 所使用到的标签 |
logging.properties |
tomcat 的日志配置文件,用于配置 tomcat 的日志输出方式和日志级别。 |
jaspic-providers.xml |
tomcat 实现了 JASPIC 1.1 Maintenance Release B 标准,并通过这个配置文件集成第三方 JASPIC 身份验证 |
jaspic-providers.xsd |
定义了 jaspic-providers.xml 所使用到的标签 |
3.3 、 lib 目录
lib 目录下主要存放 tomcat 服务器所需要的所有 Jar 包。我们在连接数据库时常常烦恼每创建一个项目就要引入一个对应的 oracle 的 Jar 包或 MySQL 的 Jar 。但是如果你把这两个 Jar 包放在此目录下,就可以引入一次,以后再创建项目时不需要每次都引入 Jar 包。
3.4 、 logs 目录
logs 目录用来存放 tomcat 在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对 tomcat 运行带来影响) 在 windows 环境中,控制台的输出日志在 catalina.xxxx-xx-xx.log 文件中。在 linux 环境中,控制台的输出日志在 catalina.out 文件中
3.5 、 temp 目录
temp 文件夹用于存放 tomcat 在运行过程中产生的 临时文件 。 temp 文件夹可以被清空,但是不能随意删除,否则会有未知错误发生。
3.6 、 webapps 目录
webapps 目录是 tomcat 默认存放应用程序的目录,好比 apache 的默认网页存放路径是 /var/www/html 一样,当 tomcat 启动时会去加载 webapps 目录下的应用程序。可以以文件夹、 war 包、 jar 包的形式发布应用。当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。该目录中介绍如下
webapps 目录介绍 |
||
docs |
tomcat 文档存放目录 |
|
examples |
tomcat 自带的一个独立的 web 应用程序例子存放位置 |
|
host-manager tomcat 的主机管理应用程序存放位置 |
host-manager 目录中文件介绍 |
|
META-INF |
整个应用程序的入口,用来描述 jar 文件的信息 |
|
context.xml |
当前应用程序的 context 容器配置,它会覆盖 tomcat/conf/context.xml 中的配置 |
|
WEB-INF |
用于存放当前应用程序的私有资源 |
|
images |
存放应用程序相关图片文件 |
|
index.jsp |
应用程序的网页文件 |
|
manager.xml |
应用程序的管理配置文件 |
|
manager |
tomcat 的管理应用程序 |
|
ROOT |
指 tomcat 的应用程序的根,如果应用程序部署在 ROOT 中,则可直接通过 http://ip:port 访问到 |
3.7 、 work 目录
work 目录用于存放 JSP 应用程序在部署时编译后产生的 class 文件,清空 work 目录,然后重启 tomcat ,可以达到清除缓存的作用。
3.8 、 LICENSE 文件
LICENSE 文件是 tomcat 开源许可证文件。
3.9 、 NOTICE 文件
NOTICE 文件是 tomcat 说明文件。
3.10 、 RELEASE-NOTES 文件
RELEASE-NOTES 文件是 tomcat 版本说明文件。
3.11 、 RUNNING.txt 文件
RUNNING.txt 文件是 tomcat 帮助文件(使用指南)。
4 、 catalina.sh | catalina.bat 脚本文件使用方法
语法格式: catalina.sh 选项
例如: catalina.sh start # 启动 tomcat
catalina.sh 脚本可用选项如下 :
catalina.sh 脚本选项及说明 |
|
选项名称 |
选项作用 |
debug |
以 debug 模式启动 |
debug -security |
启用 catalina.policy 文件 |
jpda start |
以 jpda(Java Platform Debugger Architecture) 调试器的模式启动 |
run |
即使是在 linux 上 , 也不会将输出重定向到日志文件 , 就像和 windows 上 ( 那个一直开着的黑窗口 ) 一样的效果 |
start |
启动 tomcat |
stop n |
停止 tomcat, 最多有 n 秒的延迟来处理释放资源等的操作 |
stop |
相当于 stop 5 |
stop n -force |
停止 tomcat, 最多 n 秒延迟 ,n 秒之后会强制 kill 掉 tomcat |
stop -force |
相当于 stop 5 --force |
configtest |
检测配置文件 ${catalina.home}/conf/server.xml 语法 |
version |
tomcat 版本信息 |
5 、 tomcat 环境变量说明
tomcat 环境变量说明 |
|
环境变量名称 |
环境变量说明 |
CATALINA_HOME |
tomcat 安装目录 |
CATALINA_OPTS |
一般是传递JVM参数使用的,比如-Xmx256M |
CATALINA_TMPDIR |
tomcat 临时文件目录 |
JAVA_HOME |
JDK 安装目录 |
JRE_HOME |
JRE 安装路径 |
JAVA_OPTS |
传递JVM参数使用的,比如-Xmx256M |
JPDA_TRANSPORT |
JPDA 调试器使用的传输协议 |
JPDA_ADDRESS |
制定和catalina.sh jpda start 一起使用的jpda地址 |
JSSE_HOME |
指定用于https使用的Java Secure SocketsExtension的位置 |
CATALINA_PID |
进程描述符位置 |
以上所述就是小编给大家介绍的《tomcat工作原理及目录文件介绍》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 架构视角:文件的通用存储原理
- PHP文件上传原理详解(附源码)
- Android中dex文件加载原理解析
- HDFS 的文件上传下载的核心原理
- HDFS 的文件上传下载的核心原理
- Linux 进程、线程、文件描述符的底层原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
需求
[美] 亚德里安•斯莱沃斯基(Adrian J. Slywotzky)、[美]卡尔•韦伯 (Karl Weber) / 魏薇、龙志勇 / 浙江人民出版社 / 2013-6 / 64.9
《财富汇•需求:缔造伟大商业传奇的根本力量》内容简介:需求,是缔造伟大商业传奇的根本力量。《财富汇•需求:缔造伟大商业传奇的根本力量》呈现了人们无法拒绝、竞争对手无法复制的需求创造的六大关键,在人们无奈接受的现状和心中真正期待的理想的这道鸿沟之上,架设起了一道桥梁。 创造需求,需要解开一个谜团,这个谜团是人类学、心理学、科技、设计、经济学、基础设施以及其他众多因素综合而成的奇特组合。《财富汇......一起来看看 《需求》 这本书的介绍吧!