更新時間:2022-04-25 09:42:27 來源:動力節(jié)點 瀏覽2553次
為了啟動、停止和重啟 Tomcat,我們需要訪問 Tomcat 的bin目錄。腳本文件可以用 .sh、Unix 的 shell 腳本文件和 .bat、Windows 的批處理文件來終止。
1.catalina.bat腳本文件
catalina 腳本帶有一些參數(shù),例如start、stop或run,...
當使用start調用時(與調用啟動腳本時相同),它會啟動 Tomcat,并將標準輸出和標準錯誤流定向到文件CATALINA_HOME/logs/catalina.out中。
當使用run調用時,它會導致 Tomcat 離開標準輸出,錯誤流意味著它不使用控制臺窗口來顯示輸出和錯誤。
當使用stop調用時(與調用關閉腳本時相同),它會導致 Tomcat 連接到server.xml文件的Server元素中指定的默認端口并將其發(fā)送到關閉消息。
當使用-security調用時,它可以使用catalina.policy文件。
當使用debug調用時,它以調試模式啟動 Tomcat。
2.使用Tomcat時我們需要知道的一些環(huán)境變量
In Tomcat, the running servlets can begin to take up a lot of memory in our Java environment.In order to configure the maximum size of heap memory in Tomcat, we can configure it by using ```JAVA_OPTS```. By default, the heap memory's value was 32MB for JDK 1.3.
This environment variable will be set by command line.
```python
# Korn and Bourne shell
export JAVA_OPTS="-Xmx256M"
# MS-DOS
set JAVA_OPTS="-Xmx256M"
# C-shell
setenv JAVA_OPTS="-Xmx256M"
Catalina 是 Tomcat 的一個組件,它實現(xiàn)了 servlet 規(guī)范。Catalina 的默認行為可以直接通過 Tomcat%CATALINA_BASE%/conf目錄或confTomcat 目錄下的所有文件進行配置。
下表描述了conf目錄中每個文件的含義。
文件名 | 目的 |
---|---|
catalina.policy | 包含 Catalina java 類的 Tomcat 安全策略,以 JEE 規(guī)范中定義的標準安全策略語法表示。這是 Tomcat 的核心安全策略,包括系統(tǒng)代碼、Web 應用程序和 Catalina 本身的權限定義。 |
catalina.properties | 該文件是 Catalina 類的標準 Java 屬性文件。它包含諸如安全包列表和類加載器路徑等信息。該文件還可以包含一些字符串緩存設置,我們可以在調整服務器以獲得最佳 Tomcat 性能時對其進行編輯。 |
日志記錄屬性 | 該文件配置 Catalina 內置日志記錄功能的方式,包括閾值和日志位置等內容。請注意,此日志中的所有條目均指向 JULI,這是 Tomcat 自動使用的修改后的 commons-logging 實現(xiàn)來代替 JDK 的日志記錄實現(xiàn)。 |
上下文.xml | 此 XML 配置文件用于定義 Tomcat 上下文信息,這些信息將為運行在給定 Tomcat 實例上的每個 Web 應用程序加載。通常,您應該在別處配置您的上下文信息,但此文件中有一些條目可以取消注釋,以改變 Tomcat 處理會話持久性和 Comet 連接的方式。 |
服務器.xml | 這是 Tomcat 的主要配置文件,它使用 Java Servlet 規(guī)范中指定的分層語法來配置 Catalina 的初始狀態(tài),以及定義 Tomcat 啟動和構建其各個組件的順序。該文件相當復雜,但在 Apache 網(wǎng)站上提供了全面的文檔。 |
tomcat-users.xml | 此文件包含有關給定 Tomcat 服務器上的各種用戶、密碼和用戶角色的信息,以及有關可訪問此數(shù)據(jù)的可信領域(JNDI、JDBC 等)的信息。 |
web.xml | 此文件配置將應用于加載到給定 Tomcat 實例中的所有應用程序的選項和值,包括 servlet 定義,如緩沖區(qū)大小、調試級別、Jasper 選項(如類路徑、MIME 類型)以及沒有目錄的默認歡迎文件他們自己的“索引”文件。雖然您可以在此文件中從技術上為特定 Web 應用程序配置選項,但這將需要您重新啟動整個服務器以傳播這些更改,因此不建議這樣做。 |
要了解 catalina.properties,我們將參考其內容:
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\
org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
server.loader=
shared.loader=
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
tomcat.util.buf.StringCache.byte.enabled=true
#tomcat.util.buf.StringCache.char.enabled=true
#tomcat.util.buf.StringCache.trainThreshold=500000
#tomcat.util.buf.StringCache.cacheSize=5000
該屬性提供了一些重要的類加載器路徑、安全包列表和一些可調性能屬性。catalina.properties 文件的另一個特點是我們可以在這個文件中設置自定義屬性,并在 Tomcat 的server.xml文件中將它們作為變量引用。
安全組件
默認情況下,如果通過將-security參數(shù)傳遞給catalina腳本文件來啟用 Tomcat 的安全管理器,則將使用以下屬性 - package.access和package.definition。
Jar Scanner 組件
Jar Scanner元素表示用于掃描 Web 應用程序以查找 JAR 文件和類文件目錄的組件。它通常在 Web 應用程序啟動期間用于識別配置文件,例如 TLD 或 web-fragment.xml 文件,這些文件必須作為 Web 應用程序初始化的一部分進行處理。
如果不包含Jar Scanner元素,則會自動創(chuàng)建默認的 Jar Scanner 配置,這足以滿足大多數(shù)需求。
Jar Scan Filter元素表示在將來自 Jar Scanner 的結果傳遞回應用程序之前對其進行過濾的組件。它通常用于跳過已知與某些或所有類型的掃描無關的 JAR 的掃描。
Jar Scan Filter元素可以嵌套在 Jar Scanner 組件中。
<Context>
...
<JarScanner>
<JarScanFilter
pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},
my_pluggable_feature.jar"/>
</JarScanner>
...
</Context>
Jar Scan Filter的標準實現(xiàn)是org.apache.tomcat.util.scan.StandardJarScanFilter.
我們需要了解的 Java Scan Filter 組件的一些屬性。
pluggabilitySkip:掃描 Servlet 3.0 規(guī)范引入的可插入功能時要跳過的 JAR 文件名模式的逗號分隔列表。如果未指定,則從tomcat.util.scan.StandardJarScanFilter.jarsToSkip系統(tǒng)屬性中獲取默認值。
pluggabilityScan:掃描 Servlet 3.0 規(guī)范引入的可插入功能時要掃描的 JAR 文件名模式的逗號分隔列表。如果未指定,則從tomcat.util.scan.StandardJarScanFilter.jarsToScan系統(tǒng)屬性中獲取默認值。
從可插入性掃描中排除 JAR 將阻止從 Web 應用程序 JAR(即位于/WEB-INF/lib中的 JAR)加載ServletContainerInitializer ,但不會阻止從容器(Tomcat)加載ServletContainerInitializer 。要防止加載容器提供的ServletContainerInitializer ,請使用Context的containerSciFilter屬性。
那么,Jar Scanner 用于識別配置文件,例如 TLD,...... 什么是 TLD 文件?標記庫描述符是一個 XML 文檔,其中包含有關整個庫的信息以及有關庫中包含的每個標記的信息。TLD 被 Web 容器用來驗證標簽和 JSP 頁面開發(fā)工具。通常,TLD 文件與 JSP 文件一起使用。
然后,如果 Jar Scanner 沒有在 jar 文件中找到 TLD 文件,它會拋出一個異常。最后,我們可以跳過這些 JAR 文件以提高啟動時間和 JSP 編譯時間。
在進入 Tomcat 的context.xml文件內容之前,我們需要了解上下文路徑的概念。
上下文路徑是指相對于服務器地址的位置,代表 Web 應用程序的名稱。例如,如果我們的 Web 應用程序放在%CATALINA_HOME%\webapps\myapp目錄下,它將通過 URL http://localhost/myapp訪問,其上下文路徑將是/myapp。
然后,下面是%CATALINA_HOME%\conf中context.xml文件的內容。
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
在此文件中,WatchedResource屬性包含我們項目的web.xml文件路徑和%CATALINA_HOME%\conf。
在%CATALINA_BASE%/conf/context.xml文件中,Context 元素信息將被所有 Web 應用程序加載。
在%CATALINA_BASE%/conf/[enginename]/[hostname]/context.xml.default文件中,Context 元素信息將由該主機的所有 Web 應用程序加載。
在全局或默認配置文件中加載 context.xml 文件的內容后,單個 Web 應用程序的配置將覆蓋在這些默認值之一中配置的任何內容。
然后,我們有:
在應用程序文件內/META-INF/context.xml的單個文件中。可選地(基于Host的copyXML屬性),可以將其復制到%CATALINA_BASE%/conf/[enginename]/[hostname]/并重命名為應用程序的基本文件名加上.xml擴展名。
enginename可以是 Catalina 或其他人,...
在%CATALINA_BASE%/conf/[enginename]/[hostname]/目錄中的單個文件(擴展名為.xml )中。上下文路徑和版本將從文件的基本名稱(文件名減去.xml擴展名)派生。此文件將始終優(yōu)先于打包在 Web 應用程序的META-INF目錄中的任何context.xml文件。
在主conf/server.xml的 Host 元素內。
Glassfish Java EE 服務器是新的參考實現(xiàn),Glassfish 的 Web 容器組件在很大程度上基于 Tomcat。所有開源 Java EE 應用服務器實現(xiàn)全部或部分包括 Tomcat。如果大家想了解更多相關知識,不妨來關注一下動力節(jié)點的Tomcat教程,里面還有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。