So finden Sie heraus, wie die Tomcat-Version ausgeführt wird


175

Ich versuche, Appfuse + Tomcat + jRebel zum Laufen zu bringen.

Appfuse verwendet standardmäßig Cargo, um Tomcat (Version 7.0.33) herunterzuladen und die Anwendung darauf bereitzustellen. Ich möchte einen bereits installierten Tomcat (Version 7.0.27) anstelle des heruntergeladenen verwenden. Ich habe die Änderung gemäß den häufig gestellten Fragen vorgenommen .

mvn cargo:runWie kann ich nach der Bereitstellung mit feststellen, dass der tatsächlich ausgeführte Tomcat tatsächlich 7.0.27 ist?

Früher habe ich eine falsche URL eingegeben (z. B. localhost: 8080 / dfsfsdf ), um sie auf der Fehlerseite anzuzeigen , aber jetzt wird nichts angezeigt .

Meine $CATALINA_HOMEPunkte zu meinem eigenen Kater 7.0.27. Entschuldigung vergessen zu erwähnen, es ist für Windows

Aktualisieren:

Da diese Frage irgendwie populär geworden war, möchte ich erklären, warum diese Antwort akzeptiert wurde. Einfach, es war das erste, das mein Problem löste.

Wenn man sich den Titel der Frage ansieht , haben @Tech Junkie und @CPU 100 wirklich die beste Antwort, aber nicht für das Szenario, auf das ich gestoßen bin. (Ich wollte wissen, ob mvn cargo:runmein installierter Tomcat oder ein in ein Projekt eingebetteter Tomcat ausgeführt wird.) :)


1
Wenn Sie eine JSP-Datei hochladen können, können Sie einige Informationen wie in diesem Beispiel ausdrucken
wemu

richtig! Du hast die Antwort bekommen, es ist in der Tat 7.0.27, was ich will. Bitte posten Sie es als Antwort
Yichaoz

Antworten:


52

Wenn Sie eine JSP-Datei hochladen können, können Sie einige Informationen wie in diesem Beispiel ausdrucken : bestdesigns.co.in/blog/check-jsp-tomcat-version

Speichern Sie diesen Code in einer Datei namens tomcat_version.jsp:

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

Wenn Sie auf http://example.com/tomcat_version.jsp zugreifen, sollte die Ausgabe folgendermaßen aussehen:

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

517

Obwohl dies nicht neu ist, dachte ich, kann meine Antwort anderen helfen:

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

und das ist es.

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
Um ein bisschen spezifischer zu sein, wäre Server / Lib zum Beispiel/opt/tomcat/lib
Kai Carver

4
oder zum Beispiel unter WindowsC:\Program Files\Apache Software Foundation\Tomcat 8.0\lib
Kai Carver

10
funktioniert noch im Jahr 2017. Auf meinem CentOS 7 muss ich zu / usr / share / tomcat / lib gehen.
Matthieu

Bei einem Solaris 10-Server wird beim Ausführen des Befehls die Fehlermeldung "Ausnahme im Thread" main "java.lang.UnsupportedClassVersionError: Ungültige Versionsnummer in der Klassendatei" angezeigt. Auf RHEL 7.2 habe ich die richtige Ausgabe bekommen.
sv.

5
Dies sollte als die richtige Antwort markiert werden. Ich verstehe nicht, warum Sie eine JSP schreiben und bereitstellen müssen, um die Tomcat-Version zu bestimmen. Diese Antwort kann nicht nur Programmierer, sondern auch Systemadministratoren ansprechen, die nur die genaue Tomcat-Version kennen möchten.
Itherael

99
  1. Versuchen Sie, das Verzeichnis Tomcat_home / bin zu analysieren oder auszuführen, und suchen Sie je nach Betriebssystem nach einem Skript mit dem Namen version.sh oder version.bat .
  2. Führen Sie das Skript aus ./version.shoderversion.bat

Wenn es keine version.bat oder version.sh gibt, verwenden Sie ein Tool zum Entpacken von JAR-Dateien (\ tomcat \ server \ lib \ catalogina.jar) und suchen Sie in der Datei org \ apache \ catalogina \ util \ lib \ ServerInfo.properties. die unter "server.info =" definierte Version.


Entschuldigung, ich habe vergessen zu erwähnen, ich bin in Windows. aber das Problem ist, ich weiß eigentlich nicht, welcher Ordner Tomcat ausgeführt wird
Yichaoz

@Kossel Ich habe weitere Informationen hinzugefügt, um Ihre Version zu überprüfen, aber es ist mehr manuell.
Grepit

1
Ich fand die Version in org \ apache \ catalogina \ util \ ServerInfo.properties (es gab kein lib-Paket)
Federico Pugnali

48

Führen Sie das Skript in Ihrem tomcat/binVerzeichnis aus:

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

40

Sie können es einfach http://localhost:8080/in Ihrem Webbrowser öffnen. Daraufhin wird die Tomcat-Begrüßungsseite geöffnet, auf der die Ausführung der Tomcat-Version wie folgt angezeigt wird:

Apache Tomcat/7.0.42
  • Ich gehe davon aus, dass Ihr Tomcat auf Port 8080 ausgeführt wird

12

Verwenden der Versionshinweise

Im Hauptordner von Tomcat finden Sie die Datei RELEASE-NOTES , die die folgenden Zeilen enthält (~ Zeile 20-21):

                Apache Tomcat Version 8.0.22
                        Release Notes

Oder Sie können dieselben Informationen über die Befehlszeile abrufen :

  • Windows :

    type RELEASE-NOTES | find "Apache Tomcat Version"

    Ausgabe:

                 Apache Tomcat Version 8.0.22
  • Linux :

    cat RELEASE-NOTES | grep "Apache Tomcat Version"

    Ausgabe:

                 Apache Tomcat Version 8.0.22

12

Die Version von Tomcat, auf der derzeit ausgeführt wird

Wenn Sie die Umgebungsvariable% CATALINA_HOME% festlegen, wird Windows:

>> cd %CATALINA_HOME%\bin
>> version

Alternative,

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

MEINE EINSTELLUNG --- Hoffe, dass Ihre wie folgt sein wird

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

AUSGABE

Serverversion: Apache Tomcat / 8.0.28 Server erstellt: 7. Oktober 2015 18:25:21 UTC Servernummer: 8.0.28.0 Betriebssystemname: Windows 7 Betriebssystemversion: 6.1 Architektur: amd64 JVM-Version: 1.8.0_111-b14 JVM-Anbieter: Oracle Corporation


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

Wenn Tomcat als Dienst installiert ist:

#sudo /etc/init.d/tomcat version

Auf * nix hier. Meine Versionshinweisdatei fehlte. Das Ausführen des sudoBefehls funktionierte für mich
Kunal

10

Um die Tomcat-Version herauszufinden, suchen Sie diese Datei - version.sh für * nix oder version.bat für Windows. Diese version.sh-Datei befindet sich normalerweise im Ordner Tomcat bin.

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

Hinweis

Wenn Sie nicht sicher sind, wo sich die Datei version.sh befindet, versuchen Sie diesen Befehl:

sudo find / -name "version.sh"

Erfahren Sie alles über Tomcat7.

sudo find / -name "tomcat7"

8

Dieser eine Befehl, mit dem Sie fast alles überprüfen können:

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

oder

tomcat/bin/catalina.sh version

Und die Ausgabe sieht so aus

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

Führen Sie Folgendes aus

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

seine Antwort wird so etwas sein wie:

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

6

Eine weitere Option ist das Anzeigen von Versionshinweisen von Tomcat, die für Linux / Windows gelten

{Tomcat_home}/webapps/ROOT/RELEASE-NOTES.txt

5

Ich weiß, dass es dafür vielleicht zu spät ist, aber dies könnte nützlich sein: Wenn Sie versuchen, die Apache Tomcat Server-Version anhand von Java-Code zu ermitteln, können Sie Folgendes verwenden:

von einem HttpServlet:

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

von einem ServletContextListener:

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

4

Wenn Tomcat als Dienst installiert ist, versuchen Sie:

sudo /etc/init.d/tomcat version

Tauschen Sie "Tomcat" mit dem tatsächlichen Namen des Dienstes aus.


3

Überprüfen Sie unter Linux die Tomcat-Version

cd /opt/tomcat/bin

./catalina.sh version

Das funktioniert, aber du musst jedes Mal 'sudo' verwenden, oder?
Sandun

2

Öffnen Sie Ihre Tomcat-Homepage (normalerweise localhost:8080)

Sie werden so etwas sehen:

Geben Sie hier die Bildbeschreibung ein



1

Geben Sie 404.jspoder einnon-existent.jsp .

Die Versionsnummer von Tomcat / JBoss finden Sie unten auf der Seite.


1

Um Tomcat vor Hackern zu schützen, wird empfohlen, einige Schritte zu unternehmen, um die Tomcat-Versionsinformationen auszublenden. Das OWASP-Projekt schlägt einige Schritte vor. https://www.owasp.org/index.php/Securing_tomcat . Wenn eine Tomcat-Installation somit geschützt ist, zeigt nur 1 der obigen Antworten die Version von Tomcat an.
dh durch die Datei $ TOMCAT_HOME \ RELEASE-NOTES gehen, in der die Versionsnummer deutlich bekannt gegeben wird.

Ich hatte einen solchen geschützten Server und nur die RELEASE-NOTES-Datei enthüllte die Version des Tomcat. Bei allen anderen Techniken konnten die Versionsinformationen nicht angezeigt werden.


1

Wir arbeiten in einer Windows-Umgebung und ich musste einen Weg finden, um die Tomcat-Version außerhalb der Java-Umgebung zu erhalten. Ohne die Version zu kennen, konnte ich die Verzeichnisse nicht bestimmen. Ich fand schließlich den besten Weg, den Tomcat-Dienst abzufragen, indem ich:

C: \ temp> sc query | find / I "
tomcat " SERVICE_NAME: Tomcat6
DISPLAY_NAME: Apache Tomcat 6.0 Tomcat6


0

Windows Task-Manager> Prozesse> Tomcat suchen> Rechtsklick> Dateispeicherort öffnen> Wenn Sie Tomcat7w.exe ausführen, wird dies in der Beschreibung angezeigt.

Tomcat sollte ausgeführt werden, um unter Prozesse sichtbar zu sein. Wenn nicht unter Windows Vista / 7, gehen Sie zu Task-Manager> Registerkarte (Dienste). Suchen Sie Tomcat, starten Sie es und verarbeiten Sie es.


Ich ging zum Task-Manager. Der einzige Prozess, der angezeigt wird, ist java.exe anstelle von tomcat7w.exe. Wenn ich java.exe töte, stirbt der Server
Yichaoz

0

In Unix-ähnlichen Umgebungen empfehle ich außerdem, die tatsächlich ausgeführte Prozessbefehlszeile zu überprüfen:

$ 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
...

Man kann subtile seltsame Verhaltensweisen ausführen, weil (Betriebssystem-) Umgebungsvariablen und (Java-) Systemeigenschaften auf unerwartete Werte gesetzt werden. Ich hatte eine Situation, in der aufgrund eines veralteten Tomcat setenv.shein Tomcat 8 mit Klassen von einem Tomcat 7 auf dem Klassenpfad begann. Stellen Sie sicher , dass in den Prozessbefehlszeilenoptionen wie -Dcatalina.base, -Dcatalina.homeund -classpathsinnvoll.


0

Starten Sie einfach Tomcat und suchen Sie in nach " Serverversionsname ". catalina.logsSie erhalten dann die Version Ihres Tomcat. Beispielsweise:

"07. März 2019 11:25:40 org.apache.catalina.startup.VersionLoggerListener log INFO: Name der Serverversion : Apache Tomcat / 9.0.16 "



0

Um die genaue Tomcat-Version allein zu erfahren, besuchen Sie einfach vi tomcat/BUILDING.txt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.