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
参数是必需的。 - WAR 部署在路径 /foo 上不支持重载
目前,当 Web 应用程序直接从 WAR 文件安装(发生在主机配置为不解压 WAR 文件时),不支持应用程序重载(以获取对类或
web.xml
文件的更改)。因为它只在 Web 应用程序从解压的目录安装时才有效,如果您正在使用 WAR 文件,则应该取消部署
然后再次部署
应用程序以获取您的更改。
取消部署
警告 - 如果 Web 应用程序目录和/或 ".war" 文件存在于此虚拟主机的 appBase
目录(通常为 "webapps")中,此命令将删除其内容。Web 应用程序的临时工作目录也将被删除。如果您只是想让应用程序停止服务,您应该使用 /stop
命令代替。
指示现有应用程序正常关闭,然后将其从 Tomcat 中移除(这也会使此上下文路径在以后可供重用)。此命令与 /deploy
Ant 命令以及 HTML 管理器中可用的相关部署功能在逻辑上是相反的。
如果此命令成功,您将看到类似以下的消息:
OK - Undeployed application at context path /examples
否则,消息将以 FAIL
开头,并包含错误消息。可能的问题原因包括:
- 遇到异常
尝试取消部署 Web 应用程序时遇到异常。请检查 Tomcat 日志以获取详细信息。
- 指定了无效的上下文路径
上下文路径必须以斜杠字符开头,除非您引用的是 ROOT Web 应用程序 -- 在这种情况下,上下文路径必须是零长度字符串。
- 路径 /foo 不存在上下文
您指定的上下文路径上没有部署应用程序。
- 未指定上下文路径
path
参数是必需的。
部署
Web 应用程序可以使用位于 Tomcat 服务器上的文件或目录进行部署,也可以将 Web 应用程序存档 (WAR) 文件上传到服务器。
要安装应用程序,请填写您要执行的安装类型的相应字段,然后使用安装按钮提交。
部署服务器上的目录或 WAR 文件
部署并启动一个新的 Web 应用程序,将其附加到指定的上下文路径:(该路径不能被其他 Web 应用程序使用)。此命令与取消部署命令在逻辑上相反。
部署命令有多种不同的用法。
通过 URL 部署目录或 WAR 文件
安装位于 Tomcat 服务器上的 Web 应用程序目录或 ".war" 文件。如果未指定上下文路径,则使用目录名或不带 ".war" 扩展名的 WAR 文件名作为路径。WAR 或目录 URL 指定了一个 URL(包括 file:
方案),用于目录或 Web 应用程序存档 (WAR) 文件。引用 WAR 文件的 URL 的支持语法在 java.net.JarURLConnection
类的 Javadoc 页面上有描述。只使用引用整个 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)上 /path/to/bar.war
的 ".war" 文件被部署为名为 /bar
的 Web 应用程序上下文。请注意,没有 path
参数,因此上下文路径默认为 Web 应用程序存档文件的名称,不带 ".war" 扩展名。
WAR or Directory URL: jar:file:/path/to/bar.war!/
从主机 appBase 部署目录或 WAR 文件
安装位于 Host appBase 目录中的 Web 应用程序目录或 ".war" 文件。如果未指定上下文路径,则使用目录名或不带 ".war" 扩展名的 WAR 文件名作为路径。
在此示例中,位于 Tomcat 服务器 Host appBase 目录中名为 foo
的子目录中的 Web 应用程序,被部署为名为 /foo
的 Web 应用程序上下文。请注意,没有 path
参数,因此上下文路径默认为 Web 应用程序目录的名称。
WAR or Directory URL: foo
在此示例中,位于 Tomcat 服务器 Host appBase 目录中的 ".war" 文件 bar.war
被部署为名为 /bartoo
的 Web 应用程序上下文。
Context Path: /bartoo
WAR or Directory URL: bar.war
使用上下文配置文件 ".xml" 进行部署
如果主机 deployXML 标志设置为 true,您可以使用上下文配置“.xml”文件和可选的“.war”文件或 Web 应用程序目录来安装 Web 应用程序。使用上下文“.xml”配置文件安装 Web 应用程序时,不使用上下文路径。
一个上下文配置文件 ".xml" 可以包含 Web 应用程序上下文的有效 XML,就像它在您的 Tomcat server.xml
配置文件中配置一样。以下是 Tomcat 在 Windows 上运行的一个示例:
<Context path="/foobar" docBase="C:\path\to\application\foobar">
</Context>
使用WAR 或目录 URL 是可选的。当它用于选择 Web 应用程序 ".war" 文件或目录时,它会覆盖在上下文配置文件 ".xml" 中配置的任何 docBase。
以下是一个在 Windows 上运行 Tomcat 时,使用上下文配置文件 ".xml" 安装应用程序的示例。
XML Configuration file URL: file:C:/path/to/context.xml
以下是一个在服务器上(Tomcat 运行于 Unix)使用上下文配置文件 ".xml" 和 Web 应用程序 ".war" 文件安装应用程序的示例。
XML Configuration file URL: file:/path/to/context.xml
WAR or Directory URL: jar:file:/path/to/bar.war!/
上传 WAR 文件进行安装
从本地系统上传一个 WAR 文件,并将其安装到主机的 appBase 中。不带 ".war" 扩展名的 WAR 文件名将用作上下文路径名。
使用浏览按钮从本地桌面系统选择要上传到服务器的 WAR 文件。
WAR 文件可以通过在 /META-INF/context.xml
中包含一个上下文配置 XML 文件来包含 Tomcat 特定的部署配置。
WAR 文件上传失败的原因可能有以下几种:
- 上传文件必须是 .war 文件
上传安装只接受文件扩展名为 ".war" 的文件。
- 服务器上已存在同名 WAR 文件
如果您的主机 appBase 中已存在同名 WAR 文件,上传将失败。请取消部署主机 appBase 中现有的 WAR 文件,或使用不同的名称上传新 WAR 文件。
- 文件上传失败,没有文件
文件上传失败,服务器没有收到任何文件。
- 安装上传失败,异常
WAR 文件上传或安装因 Java 异常而失败。异常消息将列出。
部署注意事项
如果主机配置了 unpackWARs=true 并且您安装了一个 war 文件,该 war 文件将被解压到您的 Host appBase 目录中的一个目录。
如果应用程序 WAR 文件或目录部署在您的 Host appBase 目录中,并且 Host 配置了 autoDeploy=true,则上下文路径必须与目录名或不带 ".war" 扩展名的 WAR 文件名匹配。
为了安全起见,当不受信任的用户可以管理 Web 应用程序时,可以将 Host deployXML 标志设置为 false。这可以防止不受信任的用户使用配置文件 XML 文件安装 Web 应用程序,并阻止他们安装位于其 Host 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 文件或目录部署在您的 Host appBase 目录中,并且 Host 配置了 autoDeploy=true,则上下文路径必须与目录名或不带 ".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 地址)的信息。