Làm thế nào để tìm ra phiên bản chạy tomcat


175

Tôi đang cố gắng để Appfuse + tomcat + jRebel hoạt động.

Appfuse theo mặc định sử dụng Cargo để tải xuống tomcat (phiên bản 7.0.33) và triển khai ứng dụng cho nó. Tôi muốn sử dụng một tomcat đã được cài đặt (phiên bản 7.0.27) thay vì tải xuống. Tôi đã thực hiện thay đổi sau Câu hỏi thường gặp về appfuse .

Sau khi triển khai với mvn cargo:run, làm thế nào tôi có thể biết rằng tomcat đang chạy thực sự là 7.0.27?

Tôi đã sử dụng để gõ một URL sai (ví dụ : localhost: 8080 / dfsfsdf ) để xem nó trong trang lỗi, nhưng bây giờ nó không hiển thị gì.

My $CATALINA_HOMEđiểm để tomcat của riêng tôi 7.0.27. Xin lỗi đã quên đề cập, nó dành cho Windows

Cập nhật:

Vì câu hỏi này đã trở nên phổ biến, tôi muốn giải thích tại sao câu trả lời được chấp nhận. đơn giản, đó là cái đầu tiên giải quyết vấn đề của tôi.

Nhìn vào tiêu đề của câu hỏi, @Tech Junkie@CPU 100 thực sự có câu trả lời tốt nhất, nhưng không phải cho kịch bản mà tôi gặp phải. (Tôi muốn biết nếu mvn cargo:runchạy tomcat đã cài đặt của tôi hoặc tomcat "dự án nhúng") :)


1
nếu bạn có thể tải lên một tệp tin JSP, bạn có thể in ra một số thông tin như trong ví dụ này: bestdesigns.co.in/blog/check-jsp-tomcat-version
wemu

đúng! bạn đã có câu trả lời, đó thực sự là 7.0.27 mà tôi muốn. xin vui lòng gửi nó như một câu trả lời
Yichaoz

Câu trả lời:


52

nếu bạn có thể tải lên một tệp tin JSP, bạn có thể in ra một số thông tin như trong ví dụ này: bestdesigns.co.in/blog/check-jsp-tomcat-version

Lưu mã này vào một tệp có tên tomcat_version.jsp:

    Tomcat Version : <%= application.getServerInfo() %><br>    
    Servlet Specification Version : 
<%= application.getMajorVersion() %>.<%= application.getMinorVersion() %> <br>    
    JSP version :
<%=JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %><br>

Khi bạn truy cập, http://example.com/tomcat_version.jsp , đầu ra sẽ trông giống như:

Tomcat Version : Apache Tomcat/5.5.25
Servlet Specification Version : 2.4
JSP version: 2.0

517

Mặc dù điều này không phải là gần đây, tôi nghĩ, câu trả lời của tôi vẫn có thể giúp đỡ người khác:

cd tomcat/lib 
java -cp catalina.jar org.apache.catalina.util.ServerInfo

và đó là nó.

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
ví dụ cụ thể hơn một chút, máy chủ / lib sẽ là/opt/tomcat/lib
Kai Carver

4
hoặc ví dụ trên Windows,C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib
Kai Carver

10
vẫn hoạt động vào năm 2017. Trên CentOS 7 của tôi, tôi cần truy cập / usr / share / tomcat / lib.
Matthieu

Một máy chủ Solaris 10, tôi gặp lỗi "Ngoại lệ trong luồng" chính "java.lang.UnsupportedClassVersionError: Số phiên bản xấu trong tệp. Class" khi tôi chạy lệnh. Trên RHEL 7.2 tôi đã nhận được đầu ra chính xác.
sv.

5
Điều này nên được gắn thẻ là câu trả lời chính xác. Tôi không thấy lý do tại sao bạn cần phải viết một bản JSP và triển khai nó để xác định phiên bản tomcat. Câu trả lời này có thể có đối tượng rộng hơn không chỉ các lập trình viên, chẳng hạn như quản trị viên hệ thống chỉ muốn biết phiên bản tomcat chính xác.
Itherael

99
  1. Hãy thử phân tích cú pháp hoặc thực thi thư mục Tomcat_home / bin và tìm tập lệnh có tên version.sh hoặc version.bat tùy thuộc vào hệ điều hành của bạn.
  2. Thực thi tập lệnh ./version.shhoặcversion.bat

Nếu không có version.bat hoặc version.sh thì hãy sử dụng một công cụ để giải nén các tệp JAR (\ tomcat \ server \ lib \ catalina.jar) và tìm trong tệp org \ apache \ catalina \ produc \ lib \ ServerInfo.propericat. phiên bản được xác định trong "server.info =".


xin lỗi tôi quên đề cập đến, tôi đang ở trong Windows. nhưng vấn đề là, tôi thực sự không biết tomcat của thư mục nào đang được chạy
Yichaoz

@Kossel Tôi đã thêm thông tin để kiểm tra phiên bản của bạn nhưng nó thủ công hơn.
grepit

1
Tôi đã tìm thấy phiên bản trong org \ apache \ catalina \ produc \ ServerInfo.properies (không có gói lib)
Federico Pugnali

49

thực thi tập lệnh trong tomcat/binthư mục của bạn :

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

Bạn có thể chỉ cần mở http://localhost:8080/trong trình duyệt web của mình và điều này sẽ mở trang chào mừng Tomcat hiển thị phiên bản Tomcat như thế này:

Apache Tomcat/7.0.42
  • Tôi giả sử rằng Tomcat của bạn đang chạy trên cổng 8080

12

Sử dụng ghi chú phát hành

Trong thư mục Tomcat chính, bạn có thể tìm thấy tệp RELEASE-NOTES chứa các dòng sau (~ dòng 20-21):

                Apache Tomcat Version 8.0.22
                        Release Notes

Hoặc bạn có thể lấy thông tin tương tự bằng dòng lệnh :

  • Windows :

    type RELEASE-NOTES | find "Apache Tomcat Version"

    Đầu ra:

                 Apache Tomcat Version 8.0.22
  • Linux :

    cat RELEASE-NOTES | grep "Apache Tomcat Version"

    Đầu ra:

                 Apache Tomcat Version 8.0.22

12

Phiên bản hiện đang chạy Tomcat

Nếu bạn đặt biến đầu ra -% CATALINA_HOME%, thì Windows:

>> cd %CATALINA_HOME%\bin
>> version

Ngoài ra,

java.exe -cp lib\catalina.jar org.apache.catalina.util.ServerInfo

CÀI ĐẶT CỦA TÔI --- Hy vọng bạn sẽ tương tự như sau

%CATALINA_HOME% --- C:\Program Files\Tomcat\apache-tomcat-8.0.28

ĐẦU RA

Phiên bản máy chủ: Apache Tomcat / 8.0.28 Máy chủ được xây dựng: ngày 7 tháng 10 năm 2015 18:25:21 Số máy chủ UTC: 8.0.28.0 Tên hệ điều hành: Windows 7 Phiên bản hệ điều hành: 6.1 Kiến trúc: amd64 Phiên bản JVM: 1.8.0_111-b14 Nhà cung cấp JVM: Tập đoàn 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

Nếu Tomcat được cài đặt như một dịch vụ:

#sudo /etc/init.d/tomcat version

Trên * nix đây. Tập tin ghi chú phát hành của tôi bị mất. Chạy sudolệnh làm việc cho tôi
Kunal

10

Để tìm hiểu phiên bản Tomcat, hãy tìm tệp này - version.sh cho * nix hoặc version.bat cho Windows. Tệp version.sh này thường nằm trong thư mục bin Tomcat.

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

Ghi chú

Nếu bạn không chắc chắn tệp version.sh ở đâu, hãy thử lệnh này:

sudo find / -name "version.sh"

Tìm hiểu mọi thứ về Tomcat7.

sudo find / -name "tomcat7"

8

Lệnh này mà bạn có thể kiểm tra hầu hết mọi thứ:

java -cp tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

hoặc là

tomcat/bin/catalina.sh version

Và đầu ra trông như thế này

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

chạy như sau

/usr/local/tomcat/bin/catalina.sh version

phản ứng của nó sẽ giống như:

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

Một tùy chọn khác là xem ghi chú phát hành từ tomcat, áp dụng cho linux / window

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

5

Tôi biết có lẽ đã quá muộn cho việc này, nhưng điều này có thể hữu ích: Nếu bạn cố gắng biết phiên bản Máy chủ Tomcat của Apache từ mã Java, bạn có thể sử dụng:

từ một httpServlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    getServletContext().getServerInfo()
}

từ một ServletContextListener:

public void contextInitialized(ServletContextEvent event)  { 
    event.getServletContext().getServerInfo();      
}

4

Nếu Tomcat được cài đặt như một dịch vụ, hãy thử:

sudo /etc/init.d/tomcat version

Trao đổi "tomcat" với tên thực của dịch vụ.


3

Trong Linux để kiểm tra phiên bản tomcat

cd /opt/tomcat/bin

./catalina.sh version

Điều này hoạt động, nhưng bạn phải sử dụng 'sudo' mỗi lần, phải không?
Sandun

2

Mở trang chủ tomcat của bạn (Thông thường localhost:8080)

Bạn sẽ thấy một cái gì đó như thế này:

nhập mô tả hình ảnh ở đây



1

Nhập 404.jsphoặc non-existent.jsp.

Lấy số phiên bản Tomcat / JBoss ở cuối trang.


1

Để bảo mật Tomcat khỏi tin tặc, chúng tôi khuyên bạn nên thử một vài bước để ẩn thông tin phiên bản tomcat. Dự án OWASP gợi ý một vài bước. https://www.owasp.org/index.php/Securing_tomcat . Nếu cài đặt tomcat được bảo vệ như vậy, thì chỉ có 1 trong số các câu trả lời ở trên sẽ hiển thị phiên bản của tomcat.
tức là đi qua tệp $ TOMCAT_HOME \ RELEASE-LƯU Ý trong đó số phiên bản được thông báo rõ ràng.

Tôi đã có một máy chủ được bảo vệ như vậy và chỉ có tệp tin LIÊN QUAN đã tiết lộ phiên bản của tomcat. tất cả các kỹ thuật khác không thể tiết lộ thông tin phiên bản.


1

Chúng tôi đang chạy trong môi trường Windows và tôi phải tìm cách đưa phiên bản Tomcat ra ngoài môi trường Java. Không biết phiên bản, tôi không thể xác định các thư mục. Cuối cùng tôi đã tìm thấy cách tốt nhất là truy vấn dịch vụ Tomcat bằng cách sử dụng:

C: \ temp> sc truy vấn | tìm / Tôi "tomcat"
SERVICE_NAME: Tomcat6
DISPLAY_NAME: Apache Tomcat 6.0 Tomcat6


0

Trình quản lý tác vụ Windows> Quy trình> tìm tomcat> nhấp chuột phải> mở vị trí tệp> nếu bạn chạy Tomcat7w.exe, nó sẽ hiển thị ở phần mô tả.

Tomcat sẽ chạy để hiển thị tại Processes nếu không có trong Windows Vista / 7, hãy chuyển đến trình quản lý tác vụ> tab (dịch vụ) tìm tomcat khởi động nó và sau đó xử lý.


Tôi đã đi đến trình quản lý tác vụ, quá trình duy nhất hiển thị là java.exe thay vì tomcat7w.exe. nếu tôi giết java.exe thì máy chủ sẽ chết
Yichaoz

0

Trong các môi trường giống như Unix, tôi cũng khuyên bạn nên kiểm tra dòng lệnh quy trình đang chạy thực tế:

$ 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
...

Người ta có thể chạy trên các hành vi kỳ lạ tinh vi do các biến môi trường (hệ điều hành) và các thuộc tính hệ thống (Java) được đặt thành các giá trị không mong muốn. Tôi đã có một tình huống do một Tomcat lỗi thời setenv.sh, A Tomcat 8 bắt đầu với các lớp học từ một Tomcat 7 trên đường dẫn lớp. Hãy chắc chắn rằng trong các tùy chọn dòng lệnh quá trình -Dcatalina.base, -Dcatalina.home-classpathcó ý nghĩa.


0

Chỉ cần bắt đầu tomcat và tìm kiếm " Tên phiên bản máy chủ " catalina.logsvà bạn sẽ nhận được phiên bản tomcat của mình. Ví dụ:

"Mar 07, 2019 11:25:40 AM org.apache.cirthina.startup.VersionLoggerListener Nhật ký INFO: Tên phiên bản máy chủ: Apache Tomcat / 9.0.16 "


0

Bạn có thể tìm hiểu thông tin máy chủ thông qua trang trạng thái của nó:

{running-tomcat-url}/manager/status

Trên trang đó, bạn có thể thấy phiên bản Java mà Tomcat của bạn chạy trên đó

Lưu ý: Tôi cũng đã dán câu trả lời này về vấn đề tương thích Tomcat6 và JRE7. Phiên bản Major.minor không được hỗ trợ 51.0


Đây không phải chỉ khi người quản lý được cài đặt? Tôi biết mặc định là nhưng chúng tôi không
DannyK

0

Để biết chính xác phiên bản tomcat, chỉ cần truy cập vi tomcat/BUILDING.txt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.