Tomcat: How to find out running Tomcat version?
Asked Answered
L

32

237

I'm trying to get Appfuse + Tomcat + jRebel working.

Appfuse by default uses Cargo to download tomcat (ver. 7.0.33) and deploy the application to it. I wish to use an already installed tomcat (ver. 7.0.27) instead of the downloaded one. I made the change following the appfuse FAQ.

After deploying with mvn cargo:run, how can I know that the actual running tomcat is indeed 7.0.27?

I used to type a wrong URL (ex. localhost:8080/dfsfsdf) to see it in the error page, but now it shows nothing.

My $CATALINA_HOME points to my own tomcat 7.0.27. sorry forgot to mention, it's for Windows.

Update:

Since this question had become somehow popular, I would like to explain why that accepted answer. simple, it was the first one which solved my problem.

I am looking at the title of the question, @Tech Junkie and @CPU 100 really have the best answer, but not for the scenario I was encountered. (I was wanting to know if mvn cargo:run runs my installed tomcat or a "project embeded" tomcat) :)

Legit answered 17/2, 2013 at 19:22 Comment(2)
if you can upload a JSP file you may print out some info like in this example: bestdesigns.co.in/blog/check-jsp-tomcat-versionInvigilate
right! you got the answer, it's indeed 7.0.27 which I want. please post it as an answerLegit
I
53

if you can upload a JSP file you may print out some info like in this example: bestdesigns.co.in/blog/check-jsp-tomcat-version

Save this code into a file called tomcat_version.jsp:

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

When you access, http://example.com/tomcat_version.jsp, the output should look similar to:

Tomcat Version : Apache Tomcat/5.5.25
Servlet Specification Version : 2.4
JSP version: 2.0
Invigilate answered 18/2, 2013 at 14:42 Comment(0)
C
654

Though this is not recent, I thought, my answer can still help others:

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

and that's it.

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
Curst answered 14/2, 2014 at 7:35 Comment(11)
to be a tiny bit more specific, server/lib would be, for example, /opt/tomcat/libEphod
or for example on Windows, C:\Program Files\Apache Software Foundation\Tomcat 8.0\libEphod
still working in 2017. On my CentOS 7, I need to go to /usr/share/tomcat/lib.Responsive
One Solaris 10 server, I get an error "Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file" when I ran the command. On RHEL 7.2 I got the correct output.Beeler
@sv. looks like there is a java version clash in your solaris server. use appropriate java version to invoke.Curst
You're right, the default Java on the system was 1.5. After I pointed to 1.7 I get the correct output on Solaris as well.Beeler
This should be tag as the correct answer. I don't see why you need to write a JSP and deploy it in order to determine the tomcat version. This answer can has wider audience not just programmers, such as system admin just wanting to know exact tomcat version.Chamfer
on Mac, with Tomcat installed via brew, you can find the install location with brew ls tomcat. For me it's /usr/local/Cellar/tomcat/Bolding
Still working for Tomcat 9.0 .Sketch
I'm running Tomcat 9.0.35 and both ServerInfo and version.sh report server_info for version. I found the version reading the RELEASE_NOTES. I'm curious why didn't the class report the correct version.Distinguish
For anyone still looking for this valuable information, be aware - org.apache.catalina.util.ServerInfo is CASE SENSITVE! I was getting Error: Could not find or load main class org.Apache.catalina.util.ServerInfo when I ran it because I had done a find/replace all for apache and replaced it with Apache - I thought it broke badly!Blayne
P
131
  1. Try parsing or executing the Tomcat_home/bin directory and look for a script named version.sh or version.bat depending on your operating system.
  2. Execute the script ./version.sh or version.bat

If there are no version.bat or version.sh then use a tool to unzipping JAR files (\tomcat\server\lib\catalina.jar) and look in the file org\apache\catalina\util\lib\ServerInfo.properties. the version defined under "server.info=".

Plover answered 17/2, 2013 at 19:27 Comment(4)
sorry I forgot to mention, I'm in Windows. but the problem is, I don't know actually which folder's tomcat is being ranLegit
@Kossel I added more information to check your version but it's more manual.Plover
I found the version in org\apache\catalina\util\ServerInfo.properties (there were no lib package)Perdomo
What if version.sh reports server_info as the version? :-/Distinguish
M
62

execute the script in your tomcat/bin directory:

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
Morly answered 14/4, 2014 at 12:42 Comment(0)
I
53

if you can upload a JSP file you may print out some info like in this example: bestdesigns.co.in/blog/check-jsp-tomcat-version

Save this code into a file called tomcat_version.jsp:

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

When you access, http://example.com/tomcat_version.jsp, the output should look similar to:

Tomcat Version : Apache Tomcat/5.5.25
Servlet Specification Version : 2.4
JSP version: 2.0
Invigilate answered 18/2, 2013 at 14:42 Comment(0)
Q
44

You can simply open http://localhost:8080/ in your web browser and this will open Tomcat welcome page that shows running Tomcat version like this:

Apache Tomcat/7.0.42
  • I assume that your Tomcat is running on port 8080
Quincey answered 5/9, 2013 at 23:32 Comment(0)
R
19

I had this challenge when working on an Ubuntu 18.04 Linux server.

Here's how I fixed it:

Run the command below to determine the location of your version.sh file:

sudo find / -name "version.sh"

For me the output was:

/opt/tomcat/bin/version.sh

Then, using the output, run the file (version.sh) as a shell script (sh):

sh /opt/tomcat/bin/version.sh

That's all.

I hope this helps

Rabid answered 9/9, 2020 at 13:48 Comment(1)
Well sudo updatedb && sudo locate version.sh is probably faster then searching your whole disk with find. Upvote anyway! Especially since your version with find also works in containers.Inclined
A
17
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

If Tomcat is installed as a service:

#sudo /etc/init.d/tomcat version
Alton answered 19/2, 2016 at 13:6 Comment(1)
On *nix here. My release notes file was missing. Running the sudo command worked for meEld
R
15

Using the release notes

In the main Tomcat folder you can find the RELEASE-NOTES file which contains the following lines (~line 20-21):

                Apache Tomcat Version 8.0.22
                        Release Notes

Or you can get the same information using command line:

  • Windows:

    type RELEASE-NOTES | find "Apache Tomcat Version"
    

    Output:

                 Apache Tomcat Version 8.0.22
    
  • Linux:

    cat RELEASE-NOTES | grep "Apache Tomcat Version"
    

    Output:

                 Apache Tomcat Version 8.0.22
    
Resilient answered 19/2, 2016 at 12:56 Comment(0)
R
15

This one command which you can check almost everything:

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

or

tomcat/bin/catalina.sh version

And the output looks like this

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
Rounder answered 13/5, 2019 at 13:52 Comment(0)
M
14

The version of currently running Tomcat

If you set the environtment variable - %CATALINA_HOME%, then Windows :

>> cd %CATALINA_HOME%\bin
>> version

Alternatively,

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

MY SETTING --- Hope yours will be similar to as follows

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

OUTPUT

Server version: Apache Tomcat/8.0.28 Server built: Oct 7 2015 18:25:21 UTC Server number: 8.0.28.0 OS Name: Windows 7 OS Version: 6.1 Architecture: amd64 JVM Version: 1.8.0_111-b14 JVM Vendor: Oracle Corporation

Monophony answered 25/5, 2017 at 13:39 Comment(0)
D
12

To find out the Tomcat version, find this file – version.sh for *nix or version.bat for Windows. This version.sh file is normally located in the Tomcat bin folder.

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

Note

If you are not sure where is the version.sh file, try this command :

sudo find / -name "version.sh"

Find out everything about Tomcat7.

sudo find / -name "tomcat7"
Disquieting answered 24/11, 2015 at 11:40 Comment(0)
H
8

run the following

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

its response will be something like:

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
Haley answered 27/5, 2015 at 22:34 Comment(0)
E
6

I know it is maybe too late for this, but this could be usefull: If you try to know Apache Tomcat Server version from Java code, you can use:

from a HttpServlet:

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

from a ServletContextListener:

public void contextInitialized(ServletContextEvent event)  { 
    event.getServletContext().getServerInfo();      
}
Ecclesiastic answered 19/6, 2017 at 22:26 Comment(0)
J
6

Another option is view release notes from tomcat,applicable to linux/window

{Tomcat_home}/webapps/ROOT/RELEASE-NOTES.txt
Joelie answered 11/7, 2018 at 5:31 Comment(0)
A
5

If Tomcat is installed as a service, try:

sudo /etc/init.d/tomcat version

Swap out "tomcat" with the actual name of the service.

Afterburner answered 15/4, 2015 at 18:20 Comment(0)
P
3

In Linux to check the tomcat version

cd /opt/tomcat/bin

./catalina.sh version
Parcheesi answered 13/6, 2019 at 11:0 Comment(1)
This works, but you have to use 'sudo' every time, right?Ka
I
2

Enter 404.jsp or non-existent.jsp.

Get Tomcat/JBoss version number at bottom of page.

Ingrained answered 27/4, 2016 at 5:22 Comment(0)
P
2

Open your tomcat home page (Usually localhost:8080)

You will see something like this:

enter image description here

Phenetole answered 18/12, 2017 at 17:35 Comment(1)
you will only see this if the manager application is enabled (which is not always the case in production envirenmentsBourdon
M
2

For Windows PowerShell command-line method of checking running version(s) of Tomcat service:

(get-service Tomcat*).DisplayName

Sample output...

Apache Tomcat 8.5 Tomcat8

If also want to know additional details including the location of folder where service running at:

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

Sample output...

Name    DisplayName               State   PathName
----    -----------               -----   --------
Tomcat8 Apache Tomcat 8.5 Tomcat8 Running "C:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe" /...
Moonstruck answered 15/8, 2020 at 17:8 Comment(0)
U
2

These Following 4 ways can be used to find out Apache Tomcat Version in Linux:

1). Linux via Version Script in Tomcat Bin Directory:

  1. Locate the Tomcat`s bin Directory that is being used
  2. Check for version.sh script exists, i.e. ll version.sh
  3. Execute the script either way: sh version.sh OR ./version.sh

This will output you sample as below:

enter image description here

2). Check Tomcat Version in Linux Command Line

ps -ef |grep -i tomcat // this is will output and you will need to eye-ball to find version, sample below

enter image description here

3). Get Tomcat version via Catalina.jar

Execute the following CMD in terminal, you will need to locate Lib folder in Tomcat

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

4). Get Tomcat version through JSP

  1. Create JSP page with the below code
  2. Then try to open the JSP via Tomcat in the Browser
  3. This will output the Tomcat Version you are running.

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

Unwilled answered 8/5, 2022 at 11:26 Comment(0)
A
1

You can find out the server information through its status page:

{running-tomcat-url}/manager/status

On that page you can see the version of Java on which your Tomcat runs

Note: I have also pasted this answer on Tomcat6 and JRE7 compatibility issue. Unsupported major.minor version 51.0

Antung answered 16/2, 2014 at 14:28 Comment(2)
Isn't this only when manager is installed? I know the default is to but we don'tFlotation
this is the only one that works on older tomcats lice 3.x ok is says page not found but in the header you get: Server: Tomcat Web Server/x.x.x FinalAbstention
S
1

run on terminal of the Unix server

w3m http://localhost:8080/

to quit press q and next y

Supplementary answered 9/6, 2015 at 12:12 Comment(0)
C
1

For securing Tomcat from hackers, it's recommended that we try a few steps at hiding the tomcat version information. The OWASP project suggests a few steps. https://www.owasp.org/index.php/Securing_tomcat . If a tomcat installation is thus protected, then only 1 of the above answers will show the version of tomcat.
i.e going through the $TOMCAT_HOME\RELEASE-NOTES file where the version number is clearly announced.

I had one such protected server and only the RELEASE-NOTES file revealed the version of the tomcat. all other techniques failed to reveal the version info.

Coati answered 30/6, 2016 at 5:53 Comment(0)
P
1

We are running in a Windows environment and I had to find a way to get the Tomcat version outside of the Java environment. Without knowing the version, I could not determine the directories. I finally found the best way was to query the Tomcat service using:

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

Predicable answered 31/10, 2017 at 14:19 Comment(0)
D
1

Simply start tomcat and search for "Server version name" in catalina.logs and you will get version of your tomcat. For example:

"Mar 07, 2019 11:25:40 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Server version name: Apache Tomcat/9.0.16"

Darin answered 7/3, 2019 at 6:0 Comment(0)
B
1

On Windows just cmd

C:\Program Files (x86)\Extensis\Portfolio Server\applications\tomcat\bin>version

Billibilliard answered 18/2, 2021 at 11:22 Comment(0)
T
1

check yout tomcat log directory.

goto  /var/log/tomcat8/

view the file: catalina.out it will show the tomcat version below:

Server version name: Apache Tomcat/8.5.72 04-Feb-2022 04:00:58.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Oct 28 2021 00:54:01 UTC 04-Feb-2022 04:00:58.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.72.0 04-Feb-2022 04:00:58.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux 04-Feb-2022 04:00:58.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 04-Feb-2022 04:00:58.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_312-b07

Thissa answered 4/2, 2022 at 2:8 Comment(0)
E
0

Windows task manager > Processes > find tomcat > right click > open file location > if you run Tomcat7w.exe it is visible at description.

Tomcat should running to be visible at Processes if not at Windows Vista/7 go to task manager > tab (services) find tomcat start it and then processes.

Eugenides answered 17/2, 2013 at 19:58 Comment(1)
I went to task manager, the only process showing is java.exe instead of tomcat7w.exe. if I kill java.exe the server diesLegit
V
0

In Unix-like environments, I also recommend checking the actual running process command line:

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

One can run on subtle weird behaviors due to (operating system) environment variables and (Java) system properties being set to unexpected values. I had a situation where due to an outdated Tomcat setenv.sh, A Tomcat 8 started with classes from a Tomcat 7 on the classpath. Make sure that in the process command line options such as -Dcatalina.base, -Dcatalina.home and -classpath make sense.

Vagrant answered 16/10, 2018 at 13:21 Comment(0)
G
0

To know exact tomcat version alone, just visit vi tomcat/BUILDING.txt

Glennglenna answered 14/6, 2020 at 3:7 Comment(1)
Where does it show the exact Tomcat version in that file? It just says the major and minor version. It does not mention the patch version, not to mention a build number or commit hash.Seashore
V
0

Sometimes the bin/version.sh script in tomcat directory still doesn't show a numerical version. E.g. it can just show: "Server version: WebServer". And other mentioned opportunities (checking path, checking logs, release notes, tomcat root page output) don't work neither. In that case (you should still have read access to tomcat's directory):

  1. take catalina.jar from tomcat's lib directory.
  2. extract it
  3. take a look inside org/apache/catalina/util/ServerInfo.properties

it can contain what you expect (server.info and server.number fields)

Vacua answered 16/8, 2022 at 13:38 Comment(0)
A
0
apt show tomcat9       # Pour Debian/Ubuntu
# or
yum info tomcat        # Pour CentOS/RedHat
...
Name        : tomcat
Arch        : noarch
Version     : 7.0.76
# first locate your catalina.sh like : 
locate catalina.sh
/opt/tomcat/bin/catalina.sh
#and 
/opt/tomcat/bin/catalina.sh version
...
Server version: Apache Tomcat/9.0.30
...
Server number:  9.0.30.0
OS Name:        Linux
OS Version:     3.10.0-1160.95.1.el7.x86_64
Architecture:   amd64
...

# or 
systemctl status tomcat
● tomcat.service - Apache Tomcat 9
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor             
preset: disabled)
Active: active (running) since Tue 2023-09-12 08:26:34 CEST; 4 weeks 2     
days ago
Process: 961 ExecStart=/opt/tomcat/bin/startup.sh (code=exited,     
status=0/SUCCESS)
Main PID: 1041 (java)
CGroup: /system.slice/tomcat.service
       └─1041 /usr/bin/java - 
Djava.util.logging.config.file=/opt/tomcat/conf/
Archery answered 12/10, 2023 at 13:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.