Apache Tomcat最早是由Sun Microsystems开发的一个Servlet容器,在1999年被捐献给ASF(Apache Software Foundation),隶属于Jakarta项目,现在已经独立为一个顶级项目。Tomcat主要实现了Java EE中的Servlet、JSP规范,同时也提供HTTP服务,是市场上非常流行的Java Web容器。
在整个文件,有以下两 属性的引用:
catalina_home:代表你的Tomcat 安装的根目录,例如G:\bin\ apache-tomcat-7.0.91。
catalina_base:代表一个特定的运行时配置Tomcat实例根。如果你想在一台机器上有多个Tomcat实例,使用catalina_base
如果你设置的属性的不同位置,该位置 catalina_home包含静态资源,如.jar, .binary. CATALINA_BASE位置包含配置文件、日志文件、部署的应用程序和其他运行时要求。
在文档中,经常使用到CATALINA_HOME,这代表tomcat的根目录。如果我们说CATALINA_HOME/readme.txt,就是说在tomcat根目录下的readme.txt文件。
比如我的Tomcat安装在G://java/apache--tomcat-7.0.91
那么G://java/apache--tomcat-7.0.91就是CATALINA_HOME
需要注意的是:windows下的tomcat并不需要强制配置CATALINA_HOME环境变量,因为如果你是手动去执行.bat文件。那么.bat文件会自动执行下面的代码,自动设定CATALINA_HOME:
1 rem Guess CATALINA_HOME if not defined
2 set CURRENT_DIR=%cd%
3 if not "%CATALINA_HOME%" == "" goto gotHome
4 set CATALINA_HOME=%CURRENT_DIR%
5 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
6 cd ..
7 set CATALINA_HOME=%cd%
8 cd %CURRENT_DIR%
其中第一行 是判断是否已经配置了CATALINA_HOME,默认情况下如果没有配置继续往下
第二行 设置CURRENT_DIR,由于我们手动启动startup.bat,因此当前目录应该是tomcat6.0/bin/
第三行 继续往下判断是否不为空,如果不为空就证明配置过了,那么跳转到gothome。否则继续往下
第四行 设置CATALINA_HOME是当前目录,即tomcat7.0/bin
第五行 判断能否找到某文件,完整目录变成tomcat7.0/bin/bin/catalina.bat。显然是不行的,因此继续往下
第六行 退出到上层目录,即tomcat7.0
第七行 设置CATALINA_HOME是tomcat7.0. ------------------------------------至此算是自动配置完了。
默认情况下,catalina_home和catalina_base指向同一目录。 catalina_base手动设置时需要运行多个Tomcat实例一 。这样做有以下好处:
1.更方便的管理提升到一个新版本的tomcat。因为所有的实例与catalina_home位置共用一套jar文件和bin文件,你可以很容易地升级到新版本的文件 并改变传播到所有Tomcat 使用相同的catalia_home目录。
2.避免重复相同的静态.jar文件。
3.可能有某些设置,例如环境变量shell或bat脚本文件(取决于您的操作系统)。
在开始使用catalina_home之前,首先考虑并创建catalina_home使用的目录树。注意,如果你不创造所有推荐目录,目录自动创建 Tomcat。如果不能创建必要的目录,例如,由于权限问题,Tomcat无法启动,也可能功能出错。
主要存放tomcat的操作命令,根据操作系统可以分为两大类:一是以.bat结尾(Windows);二是以.sh结尾(Linux)。比如可以通过startup启动,shutdown关闭Tomcat。
·一个策略文件:catalina.policy 定义了安全策略。
·两个属性文件:catalina.properties 和 logging.properties 。
·四个XML配置文件:
Tomcat运行依赖的一些Jar文件,比如常见的servlet-api.jar、jsp-api.jar。所有的应用程序可用,可以放置一些公用的Jar文件,如MySQL JDBC驱动(mysql-connector-java-5.1.{xx}-bin.jar)。
运行中产生的日志文件。包含引擎(engine)日志文件 Catalina.{yyyy-mm-dd}.log,主机日志文件localhost.{yyyy-mm-dd}.log,以及一些其他应用日志文件如manager、host-manager。访问日志也保存在此目录下。
临时文件目录,清空不会影响Tomcat运行
默认的应用程序根目录,Tomcat启动时会自动加载该目录下的应用程序,可以以文件夹、war包、jar包的形式发布(启动时会自动解压成相应的文件夹)。也可以把应用程序放置在其他路径下,需要在文件中配置路径映射。
用来存放tomcat在运行时的编译后文件,如JSP编译后的文件。清空work目录,然后重启tomcat,可以达到清除缓存的作用。
Tomcat是一个HTTP服务器,同时也是一个Servlet容器(可以执行Servlet文件,JSP、JSF会被转换成Servlet),支持多种功能,因此采用了分层、模块化的设计。
查看conf文件夹中的server.xml文件,可以发现上图的层次结构。
Server是一个顶级组件,代表了一个Tomcat实例,一个JVM进程中只能有一个Server实例。Tomcat提供了一个实现了 org.apache.catalina.Server接口的 org.apache.catalina.core.StandardServer默认类,读取Server元素配置。
Server是配置文件中的最外层元素,支持以下属性:
启动Tomcat,打开命令行工具,通过telnet命令:telnet localhost 8005 连接服务器
输入SHUTDOWN命令,即可关闭Tomcat
Server元素中可以有一个或多个Service,每个Service关联了多个Connector和一个Engine。
Service支持两个属性:
Connector主要用来处理客户端发来的请求,一个Connector与一个TCP端口绑定,Service中默认包含两个Connector。
Tomcat中的容器包括:Engine、Host、Context、Cluster,层级最高的容器是Engine,最低的是Context。
Engine中可以包含一个或者多个Host,可以配置默认主机。Engine容器会从HTTP Connector接收HTTP请求,并且会根据主机名/IP地址交由相应的主机处理请求。
一个Host元素代表了一个虚拟主机,默认主机名为localhost,支持多个Context。
Host元素定义了虚拟主机,Context则是虚拟主机下的具体应用。Tomcat启动后,webapps目录下的所有应用程序都会自动运行,访问某个具体项目需要在URL中指定项目名称,如 http://localhost:8080/examples/ ,ROOT目录除外。想要通过 http://localhost:8080 来访问自定义项目,可以把应用程序直接放到ROOT目录中(让ROOT做为项目的根目录),也可以通过Context来配置映射。
更改server.xml文件后,重新启动Tomcat,在浏览器中输入 http://localhost:8080 即可访问examples应用。
注意修改元素的appBase的属性为空 appBase="" ,否则Tomcat启动时,exmaples应用会被加载两次。
Cluster可以解决应用之间session共享、上下文属性共享,以及在集群内共同部署应用程序的问题。元素可以包含在或者元素下。
--------------------- 本文部分来自 Bboy-AJ-任杰 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013201439/article/details/80544923?utm_source=copy