Tomcat 使用及原理

以前开发 java web 应用的时候简单地使用过 tomcat,但是对其理解并不深,很多配置项都不清楚。后来长时间不做 web 开发都快忘光了,现在补补课:)

1、简介

1.1、关键的文件夹和文件

  • /bin文件,包含了 startup、shutdown 等脚本。*.sh*.bash文件分别为 Unix 系统和 Windows 系统的脚本,由于 win32 命令行缺少某些功能,这里包含了一些额外的文件。
  • /conf文件,配置文件和依赖的 DTD 文件。在这里最重要的文件是server.xml,它是 tomcat 容器的主要配置文件。
  • /logs文件,日志文件是默认存在的。
  • /webapps文件,这里是部署你的 web 应用的地方。

1.2、CATALINA_HOMECATALINA_BASE

  • CATALINA_HOME:代表了你 tomcat 安装的根目录,
  • CATALINA_BASE:代表了一个具体的 tomcat 实例运行时的配置的根目录,如果你想在一个服务器上运行多个 tomcat 实例,那么使用该属性。

如果你将这两个属性设置成不同的位置,CATALINA_HOME位置包含静态的资源,例如.jar文件,或者二进制文件。CATALINA_BASE则包含配置文件,日志文件,部署的应用和其他的运行时依赖。

1.2.1、为何使用CATALINA_BASE

CATALINA_BASECATALINA_HOME默认指向相同的目录。当你需要在一个服务器上运行多个 tomcat 实例时需要手动设置CATALINA_BASE,这样做会有以下一些好处:

  • 更容易管理新版 tomcat 的升级。因为所有使用单个CATALINA_HOME地址的实例共享同一组.jar文件和二进制文件,你能够轻松地将文件升级到最新的版本并且同时改变所有使用相同CATALINA_HOME目录的 tomcat 实例;
  • 避免复制相同的静态.jar 文件;
  • 共享某些设置,例如setenvshell 或者 bat 脚本文件。

1.2.2、CATALINA_BASE的内容

在你使用CATALINA_BASE之前,首先创建一个目录树。注意,如果你不创建所有建议的目录,tomcat 将自动创建。如果创建必要的目录失败了,比如遇到了权限问题,tomcat 要么启动失败,要么功能错误。

考虑如下目录:

  • bin目录下,包含setenv.shsetenv.battomcat-juli.jar文件。
    • recommended: No.
    • 查找顺序:首先查找CATALINA_BASECATALINA_HOME备用。
  • lib目录在类路径下添加更多资源。
    • Recommended:Yes,如果你的应用依赖其他库。
    • 查找顺序:首先检查CATALINA_BASE,之后再加载CATALINA_HOME
  • log目录每个不同实例的日志文件。
    • Recommended:Yes.
  • webapps目录自动加载 web 应用。
    • Recommended:Yes,如果你想要部署一个应用。
    • 查找顺序:只查找CATALINA_BASE
  • work目录包含了 web 应用的临时工作目录。
    • Recommended:Yes。
  • temp目录被 JVM 用于存放临时文件。
    • Recommended:Yes。

建议不要修改tomcat-juli.jar文件。但是如果你需要使用你自己的日志实现,你可以在CATALINA_BASE下为某个具体的 tomcat 实例修改tomcat-juli.jar文件。

我们建议你复制所有CATALINA_HOME/conf目录下的配置文件到CATALINA_BASE/conf目录。以防如果一个配置文件在CATALINA_BASE中丢失了,在CATALINA_HOME下却没备份,这将会导致错误。

CATALINA_BASE至少需要包含:

  • conf/server.xml
  • conf/web.xml

否则 tomcat 将无法启动或者无法正常使用。

1.2.3、如何使用CATALINA_BASE

CATALINA_BASE属性是一个环境变量,你可以在运行 tomcat 脚本之前设置它,比如:

  • On Unix:CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
  • On Windows: CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start

1.3、配置 tomcat

所有的配置信息文件都在 tomcat 启动时被读取,这意味着,如果你更改了配置,你需要重新启动 tomcat 容器。

2、安装

tomcat 的安装和使用方法在随 tomcat 目录下的 RUNING.txt 中有详细的描述。