Як дізнатись запущену версію tomcat


175

Я намагаюся, щоб Appfuse + tomcat + jRebel працював.

Appfuse за замовчуванням використовує Cargo для завантаження tomcat (версія 7.0.33) та розгортання програми до нього. Я хочу використати вже встановлений tomcat (ver. 7.0.27) замість завантаженого. Я вніс зміни, перейшовши на FAQ 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

правильно! ви отримали відповідь, я справді 7.0.27, чого я хочу. будь ласка, опублікуйте це як відповідь
— Yichaoz

Відповіді:


52

якщо ви можете завантажити файл 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

517

Хоча це ще недавно, я думав, моя відповідь все ж може допомогти іншим:

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
щоб бути трохи більш конкретним, сервер / lib був би, наприклад,/opt/tomcat/lib
— Kai Carver

4
або, наприклад, у Windows,C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib
— Кай Карвер

10
все ще працює в 2017 році. На моєму CentOS 7 мені потрібно перейти до / usr / share / tomcat / lib.
— Матьє

Один сервер Solaris 10, я отримую помилку "Виняток у потоці" main "java.lang.UnsupportedClassVersionError: Неправильний номер версії у файлі .class", коли я запускав команду. На RHEL 7.2 я отримав правильний вихід.
— св.

5
Це має бути тегом як правильною відповіддю. Я не бачу, чому потрібно написати JSP і розгорнути його, щоб визначити версію tomcat. Ця відповідь може мати широку аудиторію не лише програмістів, таких як системний адміністратор, який просто хоче знати точну версію tomcat.
— Ітераїл

99
  1. Спробуйте проаналізувати або виконати каталог Tomcat_home / bin та знайдіть скрипт з назвою version.sh або version.bat залежно від вашої операційної системи.
  2. Виконати сценарій ./version.sh абоversion.bat

Якщо немає версії version.bat або version.sh, використовуйте інструмент для розпакування файлів JAR (\ tomcat \ server \ lib \ catalina.jar) і перегляньте файл org \ apache \ catalina \ util \ lib \ ServerInfo.properties. версія, визначена в розділі "server.info =".


вибачте, що забув згадати, я в Windows. але проблема полягає в тому, що я не знаю насправді, в якій
— томатній папці керують

@Kossel Я додав більше інформації, щоб перевірити вашу версію, але це більше посібник.
— grepit

1
Я знайшов версію в org \ apache \ catalina \ util \ ServerInfo.properties (не було пакету lib)
— Федеріко Пугналі

49

виконати скрипт у своєму 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

40

Ви можете просто відкрити http://localhost:8080/у своєму веб-переглядачі, і це відкриє привітальну сторінку Tomcat, на якій відображається така версія Tomcat:

Apache Tomcat/7.0.42
  • Я припускаю, що ваш Tomcat працює на порту 8080

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

Версія поточного 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 Побудований сервер: 7 жовтня 2015 18:25:21 UTC Номер сервера: 8.0.28.0 Назва ОС: Windows 7 ОС Версія: 6.1 Архітектура: amd64 JVM Версія: 1.8.0_111-b14 JVM Постачальник: Корпорація Oracle


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команди працювало на мене
— Kunal

10

Щоб дізнатися версію Tomcat, знайдіть цей файл - version.sh для * nix або version.bat для Windows. Цей файл version.sh зазвичай знаходиться в папці Tomcat.

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

Примітка

Якщо ви не впевнені, де знаходиться файл version.sh, спробуйте виконати цю команду:

sudo find / -name "version.sh"

Дізнайтеся все про Tomcat7.

sudo find / -name "tomcat7"

8

Це одна команда, за допомогою якої ви можете перевірити майже все:

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

6

Іншим варіантом є перегляд приміток до випуску з tomcat, застосовних до linux / window

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

5

Я знаю, що це може бути пізно для цього, але це може бути корисним: Якщо ви спробуєте дізнатися версію Apache Tomcat Server з коду Java, ви можете використовувати:

від 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" фактичною назвою служби.


3

В Linux для перевірки версії tomcat

cd /opt/tomcat/bin

./catalina.sh version

Це працює, але вам доведеться кожен раз користуватися "судо", правда?
— Сандун

2

Відкрийте домашню сторінку Tomcat (як правило localhost:8080)

Ви побачите щось подібне:

введіть тут опис зображення



1

Введіть 404.jspабо non-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, і мені довелося знайти спосіб вивести версію Tomcat поза середовищем Java. Не знаючи версії, я не міг визначити каталоги. Нарешті я знайшов найкращий спосіб запитувати службу Tomcat за допомогою:

C: \ temp> sc запит | знайти / я "tomcat"
SERVICE_NAME: Tomcat6
DISPLAY_NAME: Apache Tomcat 6.0 Tomcat6


0

Менеджер завдань Windows> Процеси> знайти tomcat> клацніть правою кнопкою миші> відкрити розташування файлу> якщо ви запустите Tomcat7w.exe, це видно при описі.

Tomcat повинен працювати, щоб його було видно в "Процесах", якщо не в Windows Vista / 7, перейдіть до диспетчера завдань> вкладка (служби), знайдіть його запуску, а потім обробляє.


Я перейшов до диспетчера завдань, єдиний показ показує процес 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.shA Tomcat 8 починав з занять з Tomcat 7 на класі. Переконайтеся, що в командному рядку параметрів процесу, таких як -Dcatalina.base, -Dcatalina.homeі -classpathмає сенс.


0

Просто запустіть tomcat та знайдіть " Ім'я версії сервера " в, catalina.logsі ви отримаєте версію свого tomcat. Наприклад:

"07 березня 2019 р. 11:25:40 org.apache.catalina.startup.VersionLoggerListener журнал ІНФОРМАЦІЯ: Назва версії сервера: Apache Tomcat / 9.0.16 "


0

Інформацію про сервер можна дізнатися на його сторінці стану:

{running-tomcat-url}/manager/status

На цій сторінці ви бачите версію Java, на якій працює ваш Tomcat

Примітка. Цю відповідь я також вставив у питання сумісності Tomcat6 та JRE7. Непідтримувана major.minor версія 51.0


Це не лише тоді, коли встановлено менеджер? Я знаю, що за замовчуванням є, але ми цього не робимо
— DannyK

0

Щоб дізнатися точну версію Tomcat самостійно, просто завітайте vi tomcat/BUILDING.txt

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.