Tomcat:如何找出正在运行的tomcat版本


180

我正在尝试使Appfuse + tomcat + jRebel工作。

默认情况下,Appfuse使用Cargo下载tomcat(版本7.0.33)并将应用程序部署到其中。我希望使用已安装的tomcat(版本7.0.27)而不是已下载的tomcat。我根据appfuse FAQ进行了更改。

用部署后mvn cargo:run,我如何才能知道实际运行的tomcat确实是7.0.27?

我曾经键入错误的URL(例如localhost:8080 / dfsfsdf)以在错误页面中看到它,但是现在它什么也没显示。

$CATALINA_HOME指向自己的tomcat 7.0.27。对不起,忘了提及,它是用于Windows

更新:

由于这个问题已经以某种方式变得流行,所以我想解释一下为什么这个接受的答案。很简单,这是第一个解决了我的问题的。

从问题的标题来看, @ Tech Junkie@CPU 100确实是最好的答案,但不适用于遇到的情况。(我想知道是mvn cargo:run运行已安装的tomcat还是运行“项目嵌入” tomcat) :)


1
如果您可以上传JSP文件,则可以打印出以下示例中的某些信息:bestdesigns.co.in/blog/check-jsp-tomcat-version
wemu 2013年

对!您得到了答案,确实是我想要的7.0.27。请张贴为答案
Yichaoz

Answers:


51

如果您可以上载JSP文件,则可以打印一些信息,例如本例:bestdesigns.co.in/blog/check-jsp-tomcat-version

将此代码保存到名为tomcat_version.jsp的文件中:

    Tomcat Version : <%= application.getServerInfo() %><br>    
    Servlet Specification Version : 
<%= application.getMajorVersion() %>.<%= application.getMinorVersion() %> <br>    
    JSP version :
<%=JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %><br>

当您访问http://example.com/tomcat_version.jsp时,输出应类似于:

Tomcat Version : Apache Tomcat/5.5.25
Servlet Specification Version : 2.4
JSP version: 2.0

532

我想,尽管这不是最近,但我的回答仍然可以帮助其他人:

cd tomcat/lib 
java -cp catalina.jar org.apache.catalina.util.ServerInfo

就是这样。

Server version: Apache Tomcat/7.0.30
Server built:   May 23 2013 02:54:10
Server number:  7.0.30.0
OS Name:        Linux
OS Version:     3.13.0-36-generic
Architecture:   amd64
JVM Version:    1.7.0_65-b32
JVM Vendor:     Oracle Corporation

11
更具体一点,例如,服务器/库/opt/tomcat/lib
Kai Carver,

4
或例如在Windows上,C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib
Kai Carver

11
仍在2017年工作。在我的CentOS 7上,我需要转到/ usr / share / tomcat / lib。
Matthieu'2

一台Solaris 10服务器,运行命令时出现错误“线程“主”中的异常java.lang.UnsupportedClassVersionError:.class文件中的版本号错误”。在RHEL 7.2上,我得到了正确的输出。
sv。

6
这应该被标记为正确答案。我不明白为什么您需要编写一个JSP并部署它才能确定tomcat的版本。这个答案可以吸引更多的听众,而不仅仅是程序员,例如只想知道确切的tomcat版本的系统管理员。
伊瑟尔2015年

102
  1. 尝试解析或执行Tomcat_home / bin目录,然后根据您的操作系统查找名为version.shversion.bat的脚本。
  2. 执行脚本./version.shversion.bat

如果没有version.bat或version.sh,则使用工具解压缩JAR文件(\ tomcat \ server \ lib \ catalina.jar),然后查看文件org \ apache \ catalina \ util \ lib \ ServerInfo.properties。在“ server.info =“下定义的版本。


对不起,我忘了提,我在Windows中。但问题是,我实际上不知道哪个文件夹的tomcat正在运行
Yichaoz

@Kossel我添加了更多信息来检查您的版本,但这是更多手册。
grepit

1
我在org \ apache \ catalina \ util \ ServerInfo.properties中找到了该版本(没有lib包)
Federico Pugnali 2013年

51

执行tomcat/bin目录中的脚本:

sh tomcat/bin/version.sh

Server version: Apache Tomcat/7.0.42
Server built:   Jul 2 2013 08:57:41
Server number:  7.0.42.0
OS Name:        Linux
OS Version:     2.6.32-042stab084.26
Architecture:   amd64
JVM Version:    1.7.0_21-b11
JVM Vendor:     Oracle Corporation

41

您可以简单地http://localhost:8080/在Web浏览器中打开,这将打开Tomcat欢迎页面,该页面显示正在运行的Tomcat版本,如下所示:

Apache Tomcat/7.0.42
  • 我假设您的Tomcat在端口8080上运行

13

当前正在运行的Tomcat版本

如果您设置环境变量-%CATALINA_HOME%,则Windows:

>> cd %CATALINA_HOME%\bin
>> version

或者,

java.exe -cp lib\catalina.jar org.apache.catalina.util.ServerInfo

我的设定---希望您的如下

%CATALINA_HOME% --- C:\Program Files\Tomcat\apache-tomcat-8.0.28

输出值

服务器版本:Apache Tomcat / 8.0.28服务器内部版本:2015年10月7日18:25:21 UTC服务器编号:8.0.28.0操作系统名称:Windows 7操作系统版本:6.1体系结构:amd64 JVM版本:1.8.0_111-b14 JVM供应商:甲骨文公司


12

使用发行说明

在Tomcat主文件夹中,您可以找到RELEASE-NOTES文件,其中包含以下几行(〜20-21行):

                Apache Tomcat Version 8.0.22
                        Release Notes

或者您可以使用命令行获得相同的信息:

  • Windows

    type RELEASE-NOTES | find "Apache Tomcat Version"
    

    输出:

                 Apache Tomcat Version 8.0.22
    
  • Linux

    cat RELEASE-NOTES | grep "Apache Tomcat Version"
    

    输出:

                 Apache Tomcat Version 8.0.22
    

12
For windows machine 
Go to the tomcat directory C:\apache-tomcat-x.0.xx\bin
    bin>version.bat
    Using CATALINA_BASE:   "C:\apache-tomcat-x.0.xx"
    Using CATALINA_HOME:   "C:\apache-tomcat-x.0.xx"
    Using CATALINA_TMPDIR: "C:\apache-tomcat-x.0.xx\temp"
    Using JRE_HOME:        "C:\Program Files\Java\jdk1.8.0_65"
    Using CLASSPATH:       "C:\apache-tomcat-x.0.xx\bin\bootstrap.jar;C:\apache-tomcat-x.0.xx\bin\tomcat-juli.jar"
    Server version: Apache Tomcat/7.0.53





For Linux Machine 
Go to the tomcat directory /usr/mack/apache-tomcat-x.0.xx/bin
    # ./version.sh
    Using CATALINA_BASE:   /usr/mack/apache-tomcat-x.0.xx
    Using CATALINA_HOME:   /usr/mack/apache-tomcat-x.0.xx
    Using CATALINA_TMPDIR: /usr/mack/apache-tomcat-x.0.xx/temp
    Using JRE_HOME:        /usr/java/jdk1.7.0_71/jre
    Using CLASSPATH:       /usr/mack/apache-tomcat-x.0.xx/bin/bootstrap.jar:/usr/mack/apache-tomcat-x.0.xx/bin/tomcat-juli.jar
    Server version: Apache Tomcat/7.0.56

如果将Tomcat作为服务安装:

#sudo /etc/init.d/tomcat version

在* nix上。我的发行说明文件丢失了。执行sudo命令对我来说
很有用

11

要查找Tomcat版本,请找到此文件-用于* nix的version.sh或用于Windows的version.bat。该version.sh文件通常位于Tomcat的bin文件夹中。

phpmongodb@kumar:/usr/share/tomcat7/bin$ ./version.sh 

注意

如果不确定version.sh文件在哪里,请尝试以下命令:

sudo find / -name "version.sh"

查找有关Tomcat7的所有信息。

sudo find / -name "tomcat7"

10

您可以检查几乎所有内容的这一命令:

java -cp tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

要么

tomcat/bin/catalina.sh version

输出看起来像这样

Server version: Apache Tomcat/8.5.24
Server built:   Nov 27 2017 13:05:30 UTC
Server number:  8.5.24.0
OS Name:        Linux
OS Version:     4.4.0-137-generic
Architecture:   amd64
JVM Version:    1.8.0_131-b11
JVM Vendor:     Oracle Corporation

7

运行以下

/usr/local/tomcat/bin/catalina.sh version

它的响应将类似于:

Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /var/tmp/
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_PID:    /var/catalina.pid
Server version: Apache Tomcat/7.0.30
Server built:   Sep 27 2012 05:13:37
Server number:  7.0.30.0
OS Name:        Linux
OS Version:     2.6.32-504.3.3.el6.x86_64
Architecture:   amd64
JVM Version:    1.7.0_60-b19
JVM Vendor:     Oracle Corporation


5

我知道这可能为时已晚,但这可能很有用:如果尝试从Java代码了解Apache Tomcat服务器版本,则可以使用:

从HttpServlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    getServletContext().getServerInfo()
}

从ServletContextListener:

public void contextInitialized(ServletContextEvent event)  { 
    event.getServletContext().getServerInfo();      
}

4

如果将Tomcat作为服务安装,请尝试:

sudo /etc/init.d/tomcat version

用服务的实际名称交换“ tomcat”。



2

打开您的tomcat主页(通常localhost:8080

您将看到如下内容:

在此处输入图片说明



1

输入404.jspnon-existent.jsp

在页面底部获取Tomcat / JBoss版本号。


1

为了保护Tomcat免受黑客攻击,建议我们尝试一些隐藏Tomcat版本信息的步骤。OWASP项目建议了一些步骤。https://www.owasp.org/index.php/Securing_tomcat。如果这样保护了tomcat的安装,则以上答案中只有1个会显示tomcat的版本。
即浏览$ TOMCAT_HOME \ RELEASE-NOTES文件,其中明确声明了版本号。

我有一台受保护的服务器,只有RELEASE-NOTES文件显示了tomcat的版本。所有其他技术都无法显示版本信息。


1

我们在Windows环境中运行,因此我不得不找到一种在Java环境之外获取Tomcat版本的方法。在不知道版本的情况下,我无法确定目录。我最终发现最好的方法是使用以下方法查询Tomcat服务:

C:\ temp> sc查询| 查找/ I“ tomcat”
SERVICE_NAME:Tomcat6
DISPLAY_NAME:Apache Tomcat 6.0 Tomcat6


0

Windows任务管理器>进程>查找tomcat>右键单击>打开文件位置>如果运行Tomcat7w.exe,则在说明中可见。

如果不在Windows Vista / 7上,则Tomcat应该在“进程”上运行,以便可见。请转到任务管理器>选项卡(服务),找到tomcat启动它,然后进行处理。


我去了任务管理器,唯一显示的过程是java.exe而不是tomcat7w.exe。如果我杀死了java.exe,服务器死了
Yichaoz

0

在类似Unix的环境中,我还建议检查实际运行的进程命令行:

$ ps aux | grep java

...
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.util.logging.config.file=/srv/tomcat-instances/bla/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx4096M -XX:+UseConcMarkSweepGC -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -Xmx4096m -Xms4096m -XX:MaxPermSize=2048m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.rmi.port=8090 -Djava.rmi.server.hostname=localhost -Djava.endorsed.dirs=/opt/apache-tomcat-8.0.47/endorsed -classpath /opt/apache-tomcat-8.0.47/bin/bootstrap.jar:/opt/apache-tomcat-8.0.47/bin/tomcat-juli.jar -Dcatalina.base=/srv/tomcat-instances/bla -Dcatalina.home=/opt/apache-tomcat-8.0.47 -Djava.io.tmpdir=/tmp/tomcat8-bla-tmp org.apache.catalina.startup.Bootstrap start
...

由于(操作系统)环境变量和(Java)系统属性被设置为意外值,因此可以在微妙的怪异行为上运行。由于Tomcat过时setenv.sh,我遇到了这样的情况:Tomcat 8从classpath上的Tomcat 7中的类开始。确保在此过程中的命令行选项,例如-Dcatalina.base-Dcatalina.home-classpath有意义。


0

只需启动tomcat并在其中搜索“服务器版本名称catalina.logs,您将获得tomcat的版本。例如:

“ 2019年3月7日,上午11:25:40 org.apache.catalina.startup.VersionLoggerListener日志信息:服务器版本名称:Apache Tomcat / 9.0.16



0

要单独了解确切的tomcat版本,请访问 vi tomcat/BUILDING.txt


0

对于检查Tomcat服务的运行版本的Windows PowerShell命令行方法:

(get-service Tomcat*).DisplayName

样品输出...

Apache Tomcat 8.5 Tomcat8

如果还想知道其他详细信息,包括服务在以下位置运行的文件夹的位置:

Get-WmiObject win32_service | Where-Object {$_.Name -like 'Tomcat*'} | select Name, DisplayName, State, PathName

样品输出...

Name    DisplayName               State   PathName
----    -----------               -----   --------
Tomcat8 Apache Tomcat 8.5 Tomcat8 Running "C:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe" /...

0

在Ubuntu 18.04 Linux服务器上工作时,我遇到了这个挑战。

这是我固定的方法

运行以下命令以确定version.sh文件的位置:

sudo find / -name "version.sh"

对我来说,输出是:

/opt/tomcat/bin/version.sh

然后,使用输出,将文件(version.sh)作为shell脚本(sh)运行:

sh /opt/tomcat/bin/version.sh

就这样。

我希望这有帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.