1、WebSocket 支持- 為 Apache Tomcat 開發 WebSocket 應用程序。
2、URL 重寫- 使用基于正則表達式的重寫閥進行條件 URL 和主機重寫。
3、CDI 和 JAX-RS 支持- 配置 CDI、JAX-RS 和 eclipse Microprofile 支持。
4、Deployer - 操作 Apache Tomcat Deployer 來部署、預編譯和驗證 Web 應用程序。
5、Manager - 運行Manager Web 應用程序以在 Apache Tomcat 運行時部署、取消部署和重新部署應用程序。
6、主機管理器-在 Apache Tomcat 運行時運行主機管理器Web 應用程序以添加和刪除虛擬主機。
7、領域和訪問控制 - 描述如何配置領域(用戶、密碼及其相關角色的數據庫)以用于使用容器管理安全性的 Web 應用程序。
8、安全管理器 - 配置和使用 Java 安全管理器來支持對 Web 應用程序行為的細粒度控制。
9、JNDI 資源 - 在提供給每個 Web 應用程序的 JNDI 命名上下文中配置標準和自定義資源。
10、JDBC 數據源 - 使用數據庫連接池配置 JNDI 數據源。許多流行數據庫的示例。
11、類加載 - 關于 Apache Tomcat 中類加載的信息,包括將您的應用程序類放置在何處以便它們可見。
12、JSPs - 關于 Jasper 配置的信息,以及 JSP 編譯器的使用。
13、SSL/TLS - 安裝和配置 SSL/TLS 支持,以便您的 Apache Tomcat 將使用該https協議處理請求。
14、SSI - 在 Apache Tomcat 中使用服務器端包含。
15、CGI - 在 Apache Tomcat 中使用 CGI。
16、代理支持- 配置 Apache Tomcat 以在代理服務器(或充當代理服務器的 Web 服務器)后面運行。
17、MBean 描述符- 為自定義組件配置 MBean 描述符文件。
18、默認 Servlet - 配置默認 servlet 和自定義目錄列表。
19、Apache Tomcat 集群- 在 Apache Tomcat 環境中啟用會話復制。
20、Balancer - 配置、使用和擴展負載均衡器應用程序。
21、連接器- Apache Tomcat 中可用的連接器,以及本機 Web 服務器集成。
22、監控和管理- 啟用 JMX 遠程支持,并使用工具監控和管理 Apache Tomcat。
23、日志記錄- 在 Apache Tomcat 中配置日志記錄。
24、Apache Portable Runtime - 使用 APR 提供對 OpenSSL 的訪問以獲得 TLS 支持。
25、附加組件- 獲取附加的可選組件。
26、Using Tomcat libraries with Maven - 通過 Maven 獲取 Tomcat jar。
SSI(服務器端包含)是放置在 HTML 頁面中的指令,并在提供頁面時在服務器上進行評估。它們允許您將動態生成的內容添加到現有的 HTML 頁面,而無需通過 CGI 程序或其他動態技術來提供整個頁面。
當使用 Tomcat 作為 HTTP 服務器并且您需要 SSI 支持時,可以在 Tomcat 中添加 SSI 支持。通常,當您不想運行 Apache 之類的 Web 服務器時,這是在開發期間完成的。
Tomcat SSI 支持實現與 Apache 相同的 SSI 指令。
SSI 支持可作為 servlet 和過濾器使用。您應該使用其中之一來提供 SSI 支持,但不能同時使用兩者。
基于 Servlet 的 SSI 支持是使用類實現的 org.apache.catalina.ssi.SSIServlet。傳統上,此 servlet 映射到 URL 模式“*.shtml”。
基于過濾器的 SSI 支持是使用類實現的 org.apache.catalina.ssi.SSIFilter。傳統上,此過濾器映射到 URL 模式“*.shtml”,但它可以映射到“*”,因為它將根據 mime 類型有選擇地啟用/禁用 SSI 處理。contentType init 參數允許您將 SSI 處理應用于 JSP 頁面、JavaScript 或您希望的任何其他內容。
默認情況下,Tomcat 中禁用 SSI 支持。
Tomcat 設置
介紹
有幾種方法可以設置 Tomcat 以在不同平臺上運行。這方面的主要文檔是一個名為 RUNNING.txt的文件。如果以下信息不能回答您的某些問題,我們鼓勵您參考該文件。
視窗
使用 Windows 安裝程序可以輕松地在 Windows 上安裝 Tomcat。它的界面和功能與其他基于向導的安裝程序類似,只有少數感興趣的項目。
作為服務安裝:無論選擇什么設置,Tomcat 都將作為 Windows 服務安裝。使用組件頁面上的復選框將服務設置為“自動”啟動,以便 Tomcat 在 Windows 啟動時自動啟動。為了獲得最佳安全性,該服務應作為單獨的用戶運行,并減少權限(請參閱 Windows 服務管理工具及其文檔)。
Java 位置:安裝程序將提供默認 JRE 以用于運行該服務。安裝程序使用注冊表來確定 Java 11 或更高版本 JRE 的基本路徑,包括作為完整 jdk 的一部分安裝的 JRE。在 64 位操作系統上運行時,安裝程序將首先查找 64 位 JRE,如果未找到 64 位 JRE,則僅查找 32 位 JRE。如果在 64 位操作系統上運行時找不到 JRE,安裝程序將查找 64 位 JDK。最后,如果沒有找到 JRE 或 JDK,安裝程序將嘗試使用 JAVA_HOME環境變量。不強制使用安裝程序檢測到的默認 JRE??梢允褂萌魏我寻惭b的 Java 11 或更高版本的 JRE(32 位或 64 位)。
托盤圖標:當 Tomcat 作為服務運行時,Tomcat 運行時不會出現任何托盤圖標。請注意,在安裝結束時選擇運行 Tomcat 時,即使 Tomcat 作為服務安裝,也會使用托盤圖標。
默認值:安裝程序使用的默認值可以通過使用/C=命令行參數來覆蓋。name=value配置文件使用每對單獨一行的格式 ??捎门渲眠x項的名稱是:
Java主頁
Tomcat端口關閉
Tomcat端口Http
TomcatMenuEntriesEnable
TomcatShortcut所有用戶
Tomcat服務默認名稱
Tomcat服務名稱
Tomcat服務文件名
TomcatServiceManager文件名
TomcatAdminEnable
TomcatAdmin用戶名
TomcatAdmin密碼
TomcatAdmin角色
通過與和 /C=...一起使用,可以執行 Apache Tomcat 的完全配置的無人值守安裝。 /S/D=
有關如何 將 Tomcat 作為 Windows 服務進行管理的信息, 請參閱 Windows 服務指南。
安裝程序將創建允許啟動和配置 Tomcat 的快捷方式。請務必注意,Tomcat 管理 Web 應用程序只能在 Tomcat 運行時使用。
Unix守護進程
Tomcat 可以使用 commons-daemon 項目中的 jsvc 工具作為守護進程運行。jsvc 的源代碼壓縮包包含在 Tomcat 二進制文件中,需要編譯。構建 jsvc 需要 C ANSI 編譯器(例如 GCC)、GNU Autoconf 和 JDK。
在運行腳本之前,JAVA_HOME應將環境變量設置為 JDK 的基本路徑?;蛘?,在調用./configure腳本時,可以使用--with-java參數指定 JDK 的路徑,例如 ./configure --with-java=/usr/java.
使用以下命令應該會生成一個已編譯的 jsvc 二進制文件,位于該$CATALINA_HOME/bin文件夾中。這假設使用了 GNU TAR,這CATALINA_HOME是一個指向 Tomcat 安裝基本路徑的環境變量。
請注意,您應該在 FreeBSD 系統上使用 GNU make (gmake) 而不是本地 BSD make。
然后可以使用以下命令將 Tomcat 作為守護進程運行。
您可能還需要指定-jvm serverJVM 是否默認使用服務器 VM 而不是客戶端 VM。這已在 OSX 上觀察到。
jsvc 還有其他有用的參數,比如-user在守護進程初始化完成后會導致它切換到另一個用戶。例如,這允許以非特權用戶身份運行 Tomcat,同時仍然能夠使用特權端口。請注意,如果您使用此選項并以 root 身份啟動 Tomcat,則需要禁用 org.apache.catalina.security.SecurityListener阻止 Tomcat 在以 root 身份運行時啟動的檢查。
jsvc --help將返回完整的 jsvc 使用信息。特別是,該-debug選項對于調試運行 jsvc 的問題很有用。
該文件$CATALINA_HOME/bin/daemon.sh可用作在引導時 /etc/init.d使用 jsvc 自動啟動 Tomcat 的模板。
請注意,Commons-Daemon JAR 文件必須位于您的運行時類路徑中才能以這種方式運行 Tomcat。Commons-Daemon JAR 文件位于 bootstrap.jar 清單的 Class-Path 條目中,但是如果您收到 Commons-Daemon 類的 ClassNotFoundException 或 NoClassDefFoundError,請在啟動 jsvc 時將 Commons-Daemon JAR 添加到 -cp 參數.
對于急躁的人
只需添加
到或元素以啟用群集。
使用上述配置將啟用使用DeltaManager復制會話增量的所有到所有會話復制。我們所說的所有對所有,意味著每個會話都會復制到集群中的所有其他節點。這對較小的集群非常有用,但我們不建議對較大的集群使用它-超過4個節點左右。此外,當使用DeltaManager時,Tomcat會將會話復制到所有節點,甚至是沒有部署應用程序的節點。
要解決這些問題,您需要使用BackupManager。BackupManager只將會話數據復制到一個備份節點,并且只復制到部署了應用程序的節點。一旦使用DeltaManager運行了一個簡單的集群,當您增加集群中的節點數量時,您可能需要遷移到BackupManager。
以下是一些重要的默認值:
1、多播地址為228.0.0.4
2、多播端口為45564(端口和地址一起決定集群成員身份。
3、廣播的IP是java.net.InetAddress.getLocalHost()。getHostAddress()(確保不廣播127.0.0.1,這是一個常見錯誤)
4、偵聽復制消息的TCP端口是4000-4100范圍內第一個可用的服務器套接字
5、偵聽器已配置ClusterSessionListener
6、兩個攔截器配置為TcpFailureDetector和MessageDispatchInterceptor
以下是默認群集配置:
集群基礎
要在 Tomcat 10 容器中運行會話復制,應完成以下步驟:
您的所有會話屬性都必須實現java.io.Serializable
取消注釋Clusterserver.xml 中的元素
如果您已經定義了自定義集群閥,請確保您ReplicationValve 在 server.xml 中的集群元素下也有定義
如果您的 Tomcat 實例在同一臺機器上運行,請確保Receiver.port 每個實例的屬性都是唯一的,在大多數情況下,Tomcat 足夠聰明,可以通過自動檢測 4000-4100 范圍內的可用端口自行解決此問題
確保你web.xml有 元素
如果您使用的是 mod_jk,請確保在您的引擎中設置 了 jvmRoute 屬性,并且 jvmRoute 屬性值與您在 workers.properties 中的工作人員名稱相匹配
確保所有節點具有相同的時間并與 NTP 服務同步!
確保您的負載均衡器配置為粘性會話模式。
概述
要在 Tomcat 中啟用會話復制,可以遵循三個不同的路徑來實現完全相同的事情:
1.使用會話持久化,并將會話保存到共享文件系統(PersistenceManager + FileStore)
2.使用會話持久化,并將會話保存到共享數據庫(PersistenceManager + JDBCStore)
3.使用內存復制,使用 Tomcat 附帶的 SimpleTcpCluster (lib/catalina-tribes.jar + lib/catalina-ha.jar)
Tomcat 可以使用 執行會話狀態的所有到所有復制,DeltaManager或者使用BackupManager. all-to-all 復制是一種僅在集群較小時才有效的算法。對于較大的集群,您應該使用 BackupManager 來使用主從會話復制策略,其中會話將僅存儲在一個備份節點上。
目前,您可以使用域工作者屬性 (mod_jk > 1.2.8) 構建集群分區,并有可能通過 DeltaManager 獲得更具可擴展性的集群解決方案(您需要為此配置域攔截器)。為了在 all-to-all 環境中降低網絡流量,您可以將集群拆分為更小的組。這可以通過為不同的組使用不同的多播地址來輕松實現。一個非常簡單的設置如下所示:
這里要提到的重要一點是,會話復制只是集群的開始。另一個用于實現集群的流行概念是 farming,即您只將應用程序部署到一臺服務器,集群將在整個集群中分發部署。這是 FarmWarDeployer 可以使用的所有功能(s. cluster example at server.xml)
在下一節中,將更深入地介紹會話復制的工作原理和配置方法。
崩潰后將會話綁定到故障轉移節點
如果您正在使用 mod_jk 而未使用粘性會話或由于某些原因粘性會話不起作用,或者您只是進行故障轉移,則需要修改會話 ID,因為它之前包含前一個 tomcat 的工作者 ID(定義為通過 Engine 元素中的 jvmRoute)。為了解決這個問題,我們將使用 JvmRouteBinderValve。
JvmRouteBinderValve 重寫會話 ID 以確保下一個請求在故障轉移后保持粘性(并且不會回退到隨機節點,因為工作人員不再可用)。Valve 用相同的名稱重寫 cookie 中的 JSESSIONID 值。如果沒有這個閥門,在 mod_jk 模塊出現故障時將更難確保粘性。
請記住,如果您要在 server.xml 中添加自己的閥門,那么默認值將不再有效,請確保您添加了默認定義的所有適當閥門。
提示:
使用屬性sessionIdAttribute,您可以更改包含舊會話 ID 的請求屬性名稱。默認屬性名稱是org.apache.catalina.ha.session.JvmRouteoriginalSessionID。
技巧:
您可以在將節點刪除到所有備份節點之前通過 JMX 啟用此 mod_jk 周轉模式!在所有 JvmRouteBinderValve 備份上設置啟用 true,在 mod_jk 禁用 worker,然后刪除節點并重新啟動它!然后再次啟用 mod_jk Worker 并禁用 JvmRouteBinderValves。此用例意味著僅遷移請求的會話。
配置示例
集群架構
組件級別:
如何調整內存設置?
首先查看java-X以確定要設置的參數。然后可以通過環境變量CATALINA_OPTS設置它們(使用JAVA_OPTS也可以,但不建議使用)。此變量通常設置在bin/setenv文件中。sh或bin/setenv。蝙蝠,你可能需要自己創造。
setenv文件記錄在RUNNING中。txt文件。環境變量在catalina頂部的注釋中描述。蝙蝠或卡塔琳娜。sh文件。
為什么會出現OutOfMemoryError錯誤?
原因很多。
你的內存不足。就這么簡單-向堆中添加更多內容。
你沒有內存了。您有掛在對象引用上的代碼,垃圾收集器無法完成其工作。獲取一個探查器來調試這個。
文件描述符已用完。如果您使用的是*nix系統,據觀察,如果文件描述符用完,可能會引發OutOfMemoryError。如果您的閾值過低,可能會發生這種情況。ulimit程序可以幫助你。在考慮這些閾值時,您可能還需要考慮套接字連接。谷歌是您獲取有關此主題的更多信息的朋友。
運行的線程太多。某些操作系統對單個進程可以執行的線程數有限制。(這就是JVM。)
如果您有很多servlet或JSP,您可能需要增加永久生成。默認情況下,它是64MB。將其加倍為-XX:MaxPermSize=256m可能是一個好的開始。
操作系統限制了進程可能占用的內存量。好吧,這只正在抓吸管。
JVM有一個錯誤。已知JVM1.2會發生這種情況。?并將EJB與另一個servlet引擎一起使用。
這實際上不是一個原因,但在您的特定平臺上,看看java-X選項。它們可能非常有用。
你的類加載器沒有被垃圾收集。
例如,當使用java.util時,進程內存(非java/GC內存)用完。zip類或分配進程內存的JNI類。請參閱實例化充氣器/放氣器導致OutOfMemoryError;終結器調用不夠及時
Tomcat/webapp/??有多少內存???使用?
要了解Tomcat使用了多少內存,您可以使用JDK提供的Runtime類。
你無法知道一個網絡應用程序使用了多少內存。JVM沒有提供這些細節。
你找不到有多少內存???正在使用。JVM沒有提供這些細節。
盡管如此,內存分析工具可能會證明上述語句是錯誤的,但您可能不想在生產環境中使用它們。
Apache Tomcat 項目自豪地宣布發布 Apache Tomcat 10.1.2 版。此版本實現了作為 Jakarta EE 10 平臺一部分的規范。
此版本中的顯著變化是:
修復包含 lambda 表達式的表達式語言評估中的并發問題。
將 Apache Tomcat Native Library 的打包版本更新到 2.0.2,以獲取使用 OpenSSL 3.0.7 構建的 Windows 二進制文件。
更正與 HTTP cookie 的過期屬性一起使用的日期格式。應使用單個空格而不是單個破折號來分隔日、月和年組件,以符合 RFC 6265。
Tomcat 10.1.2(標記)
Catalina
添加:66029:添加一個配置選項,以允許用于索引JAR文件的布隆過濾器在web應用程序的生命周期內保留。在此添加之前,索引總是由對WebResourceRoot.gc()的定期調用刷新。作為此添加的一部分,歸檔索引的配置將從Context移動到WebResourceRoot?;赗ahul Jaisimha提供的補丁。(馬克)
修復:66330:更正修復62897時引入的回歸,這意味著忽略了為上下文上的skipMemoryLeakChecksOnJvmShutdown配置的任何值,并且始終使用默認值。(馬克)
修復:66331:修復SystemLogHandler上Stack重構中的回歸,該回歸捕獲了錯誤的異常。(李漢)
修復:66338:修復導致ErrorReportValve重構中出現細微差別的回歸。(李漢)
修復:轉義值用于構造JsonErrorReportValve的輸出,以確保它始終輸出有效的JSON。(馬克)
Coyote
修復:更正與HTTP cookie的過期屬性一起使用的日期格式。應使用一個空格而不是一個破折號來分隔日、月和年組件,以符合RFC 6265。(markt)
添加:當流處于不允許寫入的狀態時,由于嘗試寫入流而被取消時,在錯誤消息中包含當前流狀態的名稱。(馬克)
代碼:NIO寫入永遠不會返回-1,因此重構CLOSED_NIO_CHANNEL不這樣做,并刪除對該返回值的檢查?;谔焖?62號。(馬克)
代碼:刪除將asyncTimeout暴露給從未使用過它的組件的不必要代碼。(馬克)
Jasper
修復:66294:使用特權塊獲取添加到地址62080的線程上下文類加載器(可選),默認情況下禁用。這現在由org.apache.el.GET_CLASSSLOADER_USE_PRIVILEGED系統屬性控制。(馬克)
修復:66317:修復Lambda強制安全管理器缺少權限的問題?;贗saac Rivera Rivas(lihan)的第557號拉取請求
修復:66325:修復包含lambda表達式的表達式語言求值中的并發問題。(馬克)
Other
更新:更新到Commons Daemon 1.3.2.(markt)
修復:66323:將模塊啟動參數從JDK_JAVA_OPTIONS移動到JAVA_OPTS,因為JAVA的最低版本是11,這些選項始終是必需的。(馬克)
補充:對中文翻譯的改進。DigitalCat和lihan供稿。(馬克)
添加:對法語翻譯的改進。Mathieu Bouchard供稿。(馬克)
添加:對日語翻譯的改進。白玉京供稿。(馬克)
修復:更正刪除APR連接器時的回歸,該連接器破壞了Graal原生圖像支持。Sébastien Deleuze提供的第564號拉取請求。(馬克)
更新:將Apache Tomcat Native Library的打包版本更新到2.0.2,以獲取使用OpenSSL 3.0.7構建的Windows二進制文件。(markt)
更新:將Apache Tomcat Migration Tool for Jakarta EE的打包版本更新到1.0.5。(markt)
谷歌瀏覽器Google Chromev100.0.4896.75 64位官方最新版
WinRAR官方64位v5.80 正式官方版
騰訊電腦管家win10專版v13.5.20525.234 官方最新版
iTunes 32位for Windows 12.10.8.5 多語言官方版
騰訊應用寶pc版v5.8.2 最新版
360安全衛士電腦版v13.1.0.1151 官方正式版
百度網盤pc版v7.14.2.9 官方最新版
搜狗拼音輸入法電腦版v11.0.0.4909 正式版
酷狗音樂播放器電腦版v9.2.29.24113 官方最新版
愛奇藝pps影音客戶端v7.10.122.2375 官方最新版
微信2022最新電腦版v3.6.0.18 官方版
wps office 2016專業版V11.1.0.7875 pro版_附序列號
網友評論