231

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) :)

2240
  • 1,547
  • 2
  • 12
  • 30
Yichz
  • 9,250
  • 10
  • 54
  • 92
  • 1
    if you can upload a JSP file you may print out some info like in this example: http://www.bestdesigns.co.in/blog/check-jsp-tomcat-version – wemu Feb 17 '13 at 20:41
  • right! you got the answer, it's indeed 7.0.27 which I want. please post it as an answer – Yichz Feb 17 '13 at 21:17

31 Answers31

640

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
Vignesh Raja
  • 7,927
  • 1
  • 33
  • 42
Venkatesh Laguduva
  • 13,448
  • 6
  • 33
  • 45
128
  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=".

ROMANIA_engineer
  • 54,432
  • 29
  • 203
  • 199
grepit
  • 21,260
  • 6
  • 105
  • 81
59

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
tokhi
  • 21,044
  • 23
  • 95
  • 105
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
Svetlin Zarev
  • 14,713
  • 4
  • 53
  • 82
wemu
  • 7,952
  • 4
  • 30
  • 59
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
Abdelhameed Mahmoud
  • 2,118
  • 2
  • 22
  • 17
18

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

Promise Preston
  • 24,334
  • 12
  • 145
  • 143
  • 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. – qräbnö May 14 '21 at 10:47
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
Mack
  • 403
  • 3
  • 11
  • On *nix here. My release notes file was missing. Running the `sudo` command worked for me – Kunal Apr 05 '19 at 22:29
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
    
ROMANIA_engineer
  • 54,432
  • 29
  • 203
  • 199
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
Surasin Tancharoen
  • 5,520
  • 4
  • 32
  • 40
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

Yergalem
  • 1,603
  • 18
  • 14
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"
Nanhe Kumar
  • 15,498
  • 5
  • 79
  • 71
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
tcat
  • 81
  • 1
  • 1
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();      
}
6

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

{Tomcat_home}/webapps/ROOT/RELEASE-NOTES.txt
Harsimranjit Singh Kler
  • 2,006
  • 1
  • 18
  • 21
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.

Christopher Yang
  • 3,769
  • 4
  • 30
  • 27
3

In Linux to check the tomcat version

cd /opt/tomcat/bin

./catalina.sh version
Zoe
  • 27,060
  • 21
  • 118
  • 148
Narendra Kumar
  • 199
  • 2
  • 2
2

Enter 404.jsp or non-existent.jsp.

Get Tomcat/JBoss version number at bottom of page.

Ivan Chau
  • 1,403
  • 1
  • 18
  • 28
2

Open your tomcat home page (Usually localhost:8080)

You will see something like this:

enter image description here

Eduardo
  • 2,070
  • 21
  • 26
  • you will only see this if the manager application is enabled (which is not always the case in production envirenments – juergi Apr 21 '22 at 06:48
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" /...
jrykowski
  • 21
  • 3
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

Zoe
  • 27,060
  • 21
  • 118
  • 148
Carlo Ledesma
  • 406
  • 1
  • 3
  • 7
  • Isn't this only when manager is installed? I know the default is to but we don't – DannyK Jan 30 '17 at 14:45
  • 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 Final – louigi600 Nov 30 '21 at 14:10
1

run on terminal of the Unix server

w3m http://localhost:8080/

to quit press q and next y

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.

anjanb
  • 12,999
  • 18
  • 77
  • 106
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

1

On Windows just cmd

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

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

Procrastinator
  • 2,526
  • 30
  • 27
  • 36
Mark
  • 11
  • 3
1

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() %>

Du-Lacoste
  • 11,530
  • 2
  • 71
  • 51
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.

madlymad
  • 6,367
  • 6
  • 37
  • 68
  • I went to task manager, the only process showing is java.exe instead of tomcat7w.exe. if I kill java.exe the server dies – Yichz Feb 17 '13 at 20:12
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.

Abdull
  • 26,371
  • 26
  • 130
  • 172
0

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"

Partho63
  • 3,117
  • 2
  • 21
  • 39
Shubh
  • 1
  • 1
0

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

gobi
  • 511
  • 5
  • 13
  • 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. – Akito Apr 27 '22 at 08:55
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)

igorpcholkin
  • 947
  • 7
  • 15