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 进程、线程、文件描述符的底层原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Effective JavaScript
David Herman / Addison-Wesley Professional / 2012-12-6 / USD 39.99
"It's uncommon to have a programming language wonk who can speak in such comfortable and friendly language as David does. His walk through the syntax and semantics of JavaScript is both charming and h......一起来看看 《Effective JavaScript》 这本书的介绍吧!
Markdown 在线编辑器
Markdown 在线编辑器
RGB CMYK 转换工具
RGB CMYK 互转工具