как узнать работающую версию 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.