Tomcat Web 应用程序管理器操作指南

目录

简介

在许多生产环境中,能够在不关闭和重新启动 Tomcat 的情况下管理 Web 应用程序非常有用。本文档适用于 Web 应用程序的 HTML Web 界面管理器

该界面分为六个部分

  • 消息 - 显示成功和失败消息。
  • 管理器 - 一般管理器操作,如列表和帮助。
  • 应用程序 - Web 应用程序和命令列表。
  • 部署 - 部署 Web 应用程序。
  • 诊断 - 识别潜在问题。
  • 服务器信息 - 有关 Tomcat 服务器的信息。

消息

显示有关您执行的最后一个 Web 应用程序管理器命令的成功或失败的信息。如果成功,将显示 OK,后面可能跟有成功消息。如果失败,将显示 FAIL,后面跟有错误消息。每个命令的常见故障消息记录在下面。可以在 管理器 Web 应用程序文档中找到每个命令的故障消息完整列表。

管理器

管理器部分有三个链接

  • 列出应用程序 - 重新显示 Web 应用程序列表。
  • HTML 管理器帮助 - 指向此文档的链接。
  • 管理器帮助 - 指向全面的管理器应用程序操作方法的链接。

应用程序

应用程序部分列出有关所有已安装 Web 应用程序的信息,并提供用于管理它们的链接。对于每个 Web 应用程序,将显示以下内容

  • 路径 - Web 应用程序上下文路径。
  • 显示名称 - Web 应用程序的显示名称(如果在“web.xml”文件中配置了显示名称)。
  • 正在运行 - Web 应用程序是否正在运行且可用(true),还是未运行且不可用(false)。
  • 会话 - 此 Web 应用程序的远程用户的活动会话数。会话数是一个链接,提交后会在消息框中显示有关 Web 应用程序会话使用情况的更多详细信息。
  • 命令 - 列出可对 Web 应用程序执行的所有命令。只有可执行的命令才会列为可提交的链接。无法对管理器 Web 应用程序本身执行任何命令。可以执行以下命令
    • 启动 - 启动已停止的 Web 应用程序。
    • 停止 - 停止当前正在运行的 Web 应用程序并使其不可用。
    • 重新加载 - 重新加载 Web 应用程序,以便可以使用 /WEB-INF/lib/ 中的新“jar”文件或 /WEB-INF/classes/ 中的新类。
    • 取消部署 - 停止此 Web 应用程序,然后将其从服务器中移除。

启动

向已停止的应用程序发出重新启动信号,并使其再次可用。停止和启动很有用,例如,如果您的应用程序所需的数据库暂时不可用。通常,最好停止依赖此数据库的 Web 应用程序,而不是让用户持续遇到数据库异常。

如果此命令成功,您将看到类似这样的消息

OK - Started application at context path /examples

否则,消息将以 FAIL 开头并包含错误消息。问题可能的原因包括

  • 遇到异常

    尝试启动 Web 应用程序时遇到异常。查看 Tomcat 日志以了解详细信息。

  • 指定的上下文路径无效

    上下文路径必须以斜杠字符开头,除非您正在引用 ROOT Web 应用程序——在这种情况下,上下文路径必须是零长度字符串。

  • 路径 /foo 不存在上下文

    您指定的上下文路径上没有已部署的应用程序。

  • 未指定上下文路径

    path 参数是必需的。

停止

向现有应用程序发出信号,使其不可用,但保留已部署状态。当应用程序停止时,任何传入的请求都将看到 HTTP 错误 404,并且此应用程序将在应用程序命令列表中显示为“已停止”。

如果此命令成功,您将看到类似这样的消息

OK - Stopped application at context path /examples

否则,消息将以 FAIL 开头并包含错误消息。问题可能的原因包括

  • 遇到异常

    尝试停止 Web 应用程序时遇到异常。查看 Tomcat 日志了解详情。

  • 指定的上下文路径无效

    上下文路径必须以斜杠字符开头,除非您正在引用 ROOT Web 应用程序——在这种情况下,上下文路径必须是零长度字符串。

  • 路径 /foo 不存在上下文

    您指定的上下文路径上没有已部署的应用程序。

  • 未指定上下文路径

    path 参数是必需的。

重新加载

向现有应用程序发出信号,使其自行关闭并重新加载。当 Web 应用程序上下文不可重新加载,并且您已更新 /WEB-INF/classes 目录中的类或属性文件,或者当您已在 /WEB-INF/lib 目录中添加或更新 jar 文件时,这可能很有用。

注意:在重新加载时不会检查 /WEB-INF/web.xml Web 应用程序配置文件;将使用以前的 web.xml 配置。如果您已对 web.xml 文件进行更改,则必须停止然后启动 Web 应用程序。

如果此命令成功,您将看到类似这样的消息


OK - Reloaded application at context path /examples

否则,消息将以 FAIL 开头并包含错误消息。问题可能的原因包括

  • 遇到异常

    尝试重新启动 Web 应用程序时遇到异常。查看 Tomcat 日志了解详情。

  • 指定的上下文路径无效

    上下文路径必须以斜杠字符开头,除非您正在引用 ROOT Web 应用程序——在这种情况下,上下文路径必须是零长度字符串。

  • 路径 /foo 不存在上下文

    您指定的上下文路径上没有已部署的应用程序。

  • 未指定上下文路径

    path 参数是必需的。

  • 路径 /foo 处部署的 WAR 不支持重新加载

    目前,当 Web 应用程序直接从 WAR 文件安装时(当主机配置为不解压缩 WAR 文件时会发生这种情况),不支持应用程序重新加载(以获取类或 web.xml 文件的更改)。由于它仅在 Web 应用程序从解压缩目录安装时才起作用,因此如果您正在使用 WAR 文件,则应 undeploy 然后再次 deploy 应用程序以获取您的更改。

取消部署

警告 - 此命令将删除 Web 应用程序目录和/或“war”文件的内容(如果它存在于此虚拟主机的 appBase 目录(通常为“webapps”)中)。Web 应用程序临时工作目录也会被删除。如果您只想使应用程序停止服务,则应改用 /stop 命令。

向现有应用程序发出信号,使其优雅地自行关闭,然后将其从 Tomcat 中移除(这也使此上下文路径可供以后重复使用)。此命令是 /deploy Ant 命令的逻辑相反,以及 HTML 管理器中提供的相关部署功能。

如果此命令成功,您将看到类似这样的消息

OK - Undeployed application at context path /examples

否则,消息将以 FAIL 开头并包含错误消息。问题可能的原因包括

  • 遇到异常

    尝试取消部署 Web 应用程序时遇到异常。查看 Tomcat 日志了解详细信息。

  • 指定的上下文路径无效

    上下文路径必须以斜杠字符开头,除非您正在引用 ROOT Web 应用程序——在这种情况下,上下文路径必须是零长度字符串。

  • 路径 /foo 不存在上下文

    您指定的上下文路径上没有已部署的应用程序。

  • 未指定上下文路径需要 path 参数。

部署

可以使用位于 Tomcat 服务器上的文件或目录部署 Web 应用程序,也可以将 Web 应用程序存档 (WAR) 文件上传到服务器。

要安装应用程序,请填写要执行的安装类型的相应字段,然后使用安装按钮提交该字段。

部署目录或位于服务器上的 WAR 文件

部署并启动新的 Web 应用程序,附加到指定的上下文路径:(任何其他 Web 应用程序不得使用该路径)。此命令是取消部署命令的逻辑相反命令。

可以使用多种不同的方式来使用部署命令。

通过 URL 部署目录或 WAR

安装位于 Tomcat 服务器上的 Web 应用程序目录或“.war”文件。如果未指定上下文路径,则目录名称或不带“.war”扩展名的 war 文件名称将用作路径。WAR 或目录 URL指定一个 URL(包括 file: 方案),用于目录或 Web 应用程序存档 (WAR) 文件。有关引用 WAR 文件的 URL 的受支持语法,请参阅 java.net.JarURLConnection 类的 Javadocs 页面。仅使用引用整个 WAR 文件的 URL。

在此示例中,位于 Tomcat 服务器(在 Windows 上运行)上的目录 C:\path\to\foo 中的 Web 应用程序作为名为 /footoo 的 Web 应用程序上下文进行部署。

Context Path: /footoo
WAR or Directory URL: file:C:/path/to/foo

在此示例中,Tomcat 服务器(在 Unix 上运行)上的“.war”文件 /path/to/bar.war 作为名为 /bar 的 Web 应用程序上下文进行部署。请注意,没有 path 参数,因此上下文路径默认为不带“.war”扩展名的 Web 应用程序存档文件的名称。

WAR or Directory URL: jar:file:/path/to/bar.war!/

从主机 appBase 部署目录或 War

安装位于主机 appBase 目录中的 Web 应用程序目录或“.war”文件。如果未指定上下文路径,则目录名称或不带“.war”扩展名的 war 文件名称将用作路径。

在此示例中,位于 Tomcat 服务器的主机 appBase 目录中的名为 foo 的子目录中的 Web 应用程序作为名为 /foo 的 Web 应用程序上下文进行部署。请注意,没有 path 参数,因此上下文路径默认为 Web 应用程序目录的名称。

WAR or Directory URL: foo

在此示例中,位于 Tomcat 服务器上的主机 appBase 目录中的“.war”文件 bar.war 作为名为 /bartoo 的 Web 应用程序上下文进行部署。

Context Path: /bartoo
WAR or Directory URL: bar.war

使用上下文配置“.xml”文件部署

如果主机 deployXML 标志设置为 true,则可以使用上下文配置“.xml”文件和可选的“.war”文件或 Web 应用程序目录安装 Web 应用程序。使用上下文“.xml”配置文件安装 Web 应用程序时,不会使用上下文路径

Context 配置“.xml”文件可以包含 Web 应用程序 Context 的有效 XML,就像在 Tomcat server.xml 配置文件中配置一样。以下是 Tomcat 在 Windows 上运行的示例

<Context path="/foobar" docBase="C:\path\to\application\foobar">
</Context>

WAR 或目录 URL 的使用是可选的。当用于选择 Web 应用程序“.war”文件或目录时,它将覆盖在 context 配置“.xml”文件中配置的任何 docBase。

以下是使用 Context 配置“.xml”文件安装应用程序的示例,适用于在 Windows 上运行的 Tomcat。

XML Configuration file URL: file:C:/path/to/context.xml

以下是使用 Context 配置“.xml”文件和位于服务器上的 Web 应用程序“.war”文件安装应用程序的示例(Tomcat 在 Unix 上运行)。

XML Configuration file URL: file:/path/to/context.xml
WAR or Directory URL: jar:file:/path/to/bar.war!/

上传 WAR 文件进行安装

从本地系统上传 WAR 文件,并将其安装到主机的 appBase 中。WAR 文件的名称(不带“.war”扩展名)用作 context 路径名称。

使用浏览按钮从本地桌面系统中选择要上传到服务器的 WAR 文件。

.WAR 文件可能包括 Tomcat 特定的部署配置,方法是在 /META-INF/context.xml 中包含 Context 配置 XML 文件。

WAR 文件的上传可能会因以下原因而失败

  • 上传的文件必须是 .war

    上传安装只接受文件名扩展名为“.war”的文件。

  • War 文件已存在于服务器上

    如果同名 war 文件已存在于主机的 appBase 中,则上传将失败。从主机的 appBase 中取消部署现有 war 文件,或使用其他名称上传新的 war 文件。

  • 文件上传失败,无文件

    文件上传失败,服务器未收到任何文件。

  • 安装上传失败,异常

    war 文件上传或安装因 Java 异常而失败。异常消息将被列出。

部署说明

如果主机配置了 unpackWARs=true,并且您安装了 war 文件,则 war 将解压缩到主机 appBase 目录中的目录中。

如果应用程序 war 或目录部署在主机 appBase 目录中,并且主机配置了 autoDeploy=true,则 Context 路径必须与目录名称或 war 文件名称(不带“.war”扩展名)匹配。

为了在不受信任的用户可以管理 Web 应用程序时的安全性,可以将主机 deployXML 标志设置为 false。这可以防止不受信任的用户使用配置 XML 文件安装 Web 应用程序,还可以防止他们安装位于其主机 appBase 之外的应用程序目录或“.war”文件。

部署消息

如果部署和启动成功,您将收到如下消息

OK - Deployed application at context path /foo

否则,消息将以 FAIL 开头并包含错误消息。问题可能的原因包括

  • 应用程序已存在于路径 /foo

    所有当前运行的 Web 应用程序的上下文路径必须唯一。因此,您必须使用此上下文路径取消部署现有的 Web 应用程序,或为新应用程序选择不同的上下文路径。

  • 文档基不存在或不是可读目录

    WAR 或目录 URL: 字段指定的 URL 必须标识此服务器上包含 Web 应用程序的“解包”版本的目录,或包含此应用程序的 Web 应用程序归档 (WAR) 文件的绝对 URL。更正为 WAR 或目录 URL: 字段输入的值。

  • 遇到异常

    尝试启动新 Web 应用程序时遇到异常。查看 Tomcat 日志了解详细信息,但可能的原因包括解析 /WEB-INF/web.xml 文件时出现问题,或初始化应用程序事件侦听器和过滤器时遇到缺少的类。

  • 指定的应用程序 URL 无效

    您指定的 WAR 或目录 URL: 字段的 URL 无效。此类 URL 必须以 file: 开头,而 WAR 文件的 URL 必须以 “.war” 结尾。

  • 指定的上下文路径无效

    上下文路径必须以斜杠字符开头,除非您引用 ROOT Web 应用程序——在这种情况下,上下文路径必须是 “/” 字符串。

  • 上下文路径必须与目录或 WAR 文件名匹配

    如果应用程序 war 或目录部署在主机 appBase 目录中,并且主机配置了 autoDeploy=true,则 Context 路径必须与目录名称或 war 文件名称(不带“.war”扩展名)匹配。

  • 只能部署 Host Web 应用程序目录中的 Web 应用程序

    如果 Host deployXML 标志设置为 false,则当尝试在 Host appBase 目录之外安装 Web 应用程序目录或 “.war” 文件时,将发生此错误。

诊断

查找内存泄漏

查找泄漏诊断触发完全垃圾回收。在生产系统上使用时应极其谨慎。

查找泄漏诊断尝试识别在停止、重新加载或取消部署时导致内存泄漏的 Web 应用程序。结果应始终通过分析器确认。该诊断使用 StandardHost 实现提供的附加功能。如果使用未扩展 StandardHost 的自定义主机,则该诊断将不起作用。

此诊断将列出已停止、重新加载或取消部署的 Web 应用程序的上下文路径,但前几次运行的类仍存在于内存中,因此是内存泄漏。如果某个应用程序已重新加载多次,则可能会列出多次。

明确地从 Java 代码触发完全垃圾回收被记录为不可靠。此外,根据所使用的 JVM,可以选择禁用显式 GC 触发,例如 -XX:+DisableExplicitGC。如果您想确保诊断成功运行完全 GC,则需要使用 GC 日志记录、JConsole 或类似工具进行检查。

服务器信息

此部分显示有关 Tomcat、Tomcat 托管在之上的服务器的操作系统、Tomcat 在其中运行的 Java 虚拟机、服务器的主机名(可能不是用于访问 Tomcat 的主机名)和服务器的主 IP 地址(可能不是用于访问 Tomcat 的 IP 地址)的信息。