Ohhnews

分类导航

$ cd ..
Baeldung原文

如何查看 Apache Tomcat 服务器版本

#tomcat#服务器管理#java应用#web服务器#运维工具

1. 概述

Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器。它通过在服务器端执行 Java Web 应用程序来创建动态 Web 内容。

在本教程中,我们将讨论如何查找 Tomcat 服务器的版本。示例中使用的 Tomcat 服务器版本为 10.1.52,运行在 Debian 12 发行版上。

2. Web 界面

**我们可以通过在 Web 浏览器中打开 URL *http://localhost:8080*,从运行服务器的节点访问该服务器**:

[LOADING...]

Apache Tomcat 服务器默认运行在 8080 端口上。显然,服务器版本是 10.1.52。如果尝试从远程主机检查,则需要将 URL 中的 localhost 替换为服务器的 IP 地址。

网页的标题为 Apache Tomcat/10.1.52。因此,我们也可以使用 curl 从标题中获取版本信息:

$ bash
$ curl -s http://localhost:8080 | grep title
        <title>Apache Tomcat/10.1.52</title

-s 选项通过在输出中跳过进度表,以静默模式运行 curl。我们使用 grep 来过滤响应内容,并仅打印定义网页标题的 HTML <title> 标签。

3. version.sh 脚本

我们可以使用 Tomcat 服务器 bin 目录下的 version.sh 脚本来显示其版本:

$ bash
$ cd /opt/tomcat
$ ./bin/version.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/10.1.52
Server built:   Jan 23 2026 19:29:07 UTC
Server number:  10.1.52.0
OS Name:        Linux
OS Version:     6.1.0-10-amd64
Architecture:   amd64
JVM Version:    17.0.18+8-Debian-1deb12u1
JVM Vendor:     Debian

在我们的设置中,服务器位于 /opt/tomcat 目录中。该脚本位于 /opt/tomcat/bin 目录中。从输出可以看出,服务器版本为 10.1.52。我们可以通过使用 grep 过滤输出来仅打印服务器版本:

$ bash
$ ./bin/version.sh | grep "Server version"
Server version: Apache Tomcat/10.1.52

即使服务器没有运行,我们也可以运行此脚本并获取版本信息。

4. catalina.sh 脚本

另一个选择是使用 bin 目录下的 catalina.sh 脚本:

$ bash
$ ./bin/catalina.sh version
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/10.1.52
Server built:   Jan 23 2026 19:29:07 UTC
Server number:  10.1.52.0
OS Name:        Linux
OS Version:     6.1.0-10-amd64
Architecture:   amd64
JVM Version:    17.0.18+8-Debian-1deb12u1
JVM Vendor:     Debian
Server built:   Jan 23 2026 19:29:07 UTC
Server number:  10.1.52.0

该脚本有多种用途。例如,我们可以用它来启动和停止服务器,因此它接受多个命令。我们传入 version 命令来显示有关服务器的信息。

该脚本的输出与 version.sh 的输出相同。实际上,version.sh 在后台调用了 catalina.sh。就像 version.sh 一样,即使服务器没有运行,我们也可以运行此脚本并获取版本。

我们在 Linux 上运行了 version.sh 和 catalina.sh,但由于 Apache Tomcat 是跨平台服务器,这些脚本也存在于其他操作系统中。例如,我们可以在 Windows 上使用 version.bat 和 catalina.bat。

5. catalina.jar 文件

另一个替代方法是使用 java 命令运行 lib 目录下的 jar 文件 catalina.jar。包含服务器版本的 org.apache.catalina.util.ServerInfo 类就驻留在该 jar 文件中:

$ bash
$ java -cp /opt/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo
Server version: Apache Tomcat/10.1.52
Server built:   Jan 23 2026 19:29:07 UTC
Server number:  10.1.52.0
OS Name:        Linux
OS Version:     6.1.0-10-amd64
Architecture:   amd64
JVM Version:    17.0.18+8-Debian-1deb12u1
JVM Vendor:     Debian

输出与前几节中的输出类似。即使服务器没有运行,我们也可以运行此 jar 文件并获取版本。

6. 日志文件

每次服务器启动时,版本都会打印在日志文件的开头。因此,我们可以从日志文件中获取版本:

$ bash
$ grep "Starting Servlet engine" ./logs/catalina.out | tail -1
17-Feb-2026 05:19:34.090 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.1.52]

服务器的日志文件 catalina.out 位于 logs 目录中。我们使用 grep 在日志文件中搜索 "Starting Servlet engine" 表达式。此外,由于日志文件中可能存在多个实例,我们使用 tail 命令(即 tail -1)仅打印最后一个实例。

如果服务器至少启动过一次,则此方法适用。

7. 发行说明

服务器主目录下的 RELEASE-NOTES 文件包含版本信息。因此,我们可以使用 grep 打印该版本:

$ bash
$ grep "Apache Tomcat Version" ./RELEASE-NOTES
                     Apache Tomcat Version 10.1.52

从输出中可以明显看出,版本是 10.1.52。

8. 通过 Java 应用程序以编程方式获取

也可以从正在运行的 Java 应用程序中检查服务器版本。我们已经了解了如何使用 java 命令从命令行调用 org.apache.catalina.util.ServerInfo 类。我们可以调用该类的静态 getServerInfo() 方法来获取版本:

$ java
String serverInfo = ServerInfo.getServerInfo();

或者,如果我们正在使用 Servlet,则可以使用 ServletContext 接口中的 getServerInfo() 方法获取运行该 Servlet 的服务器的名称和版本:

$ java
String serverInfo = getServletContext().getServerInfo();

此方法不仅适用于 Tomcat 服务器,也适用于其他 Servlet 容器。

9. 结论

在本文中,我们讨论了如何查找 Tomcat 服务器的版本。

首先,我们了解了如何通过 Web 界面获取服务器版本。我们还了解到,可以通过在命令行使用 curl 命令来自动化此方法。

然后,我们讨论了使用多个脚本和文件的方法。这些方法包括使用 version.sh 和 catalina.sh 脚本、catalina.jar 文件、服务器日志文件以及发行说明。根据服务器安装目录的权限,使用这些文件可能需要 root 权限。

最后,我们学习了如何从 Java 应用程序和 Servlet 中获取服务器版本。