Як дізнатись запущену версію 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.