как узнать работающую версию Tomcat


175

Я пытаюсь заставить Appfuse + tomcat + jRebel работать.

Appfuse по умолчанию использует Cargo для загрузки tomcat (версия 7.0.33) и развертывания в нем приложения. Я хочу использовать уже установленный tomcat (версия 7.0.27) вместо загруженного. Я внес изменения после FAQ по appfuse .

После развертывания с помощью mvn cargo:run, как я могу знать, что на самом деле запущенный Tomcat действительно 7.0.27?

Раньше я вводил неправильный URL (например, localhost: 8080 / dfsfsdf ), чтобы увидеть его на странице ошибок, но теперь он ничего не показывает.

Мои $CATALINA_HOMEочки для моего собственного кота 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.
— 17

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 =».


извини я забыл упомянуть, я в винде. но проблема в том, что на самом деле я не знаю, в какую папку
— запускается

@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команды работал на меня
— Кунал

10

Чтобы узнать версию Tomcat, найдите этот файл - version.sh для * nix или version.bat для Windows. Этот файл version.sh обычно находится в папке bin 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


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

Поменяйте местами «кота» с реальным названием сервиса.


3

В Linux проверить версию Tomcat

cd /opt/tomcat/bin

./catalina.sh version

Это работает, но вы должны использовать «sudo» каждый раз, верно?
— Sandun

2

Откройте домашнюю страницу кота (обычно 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 показал версию кота. все другие методы не смогли раскрыть информацию о версии.


1

Мы работаем в среде Windows, и мне нужно было найти способ получить версию Tomcat за пределами среды Java. Не зная версии, я не смог определить каталоги. Наконец, я обнаружил, что лучший способ - это запросить сервис Tomcat, используя:

C: \ temp> sc query | найти / я "кот"
SERVICE_NAME: Tomcat6
DISPLAY_NAME: Apache Tomcat 6.0 Tomcat6


0

Диспетчер задач Windows> Процессы> найти tomcat> щелкнуть правой кнопкой мыши> открыть местоположение файла> если вы запустите Tomcat7w.exe, это видно в описании.

Tomcat должен работать, чтобы быть видимым в процессах, если не в Windows Vista / 7, перейдите в диспетчер задач> вкладка (службы), найдите, чтобы tomcat запустил его, а затем обработал.


Я пошел в диспетчер задач, единственный процесс, показывающий это 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 log INFO: Имя версии сервера: 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.