黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Tomca教程
Tomcat Manager
Tomcat Realm 配置
Tomcat 安全管理
Tomcat JNDI 資源
Tomcat JDBC 數(shù)據(jù)源
Tomcat 類加載機(jī)制
Tomcat JSPs
Tomcat SSL/TLS配置
Tomcat SSI
Tomcat CGI
Tomcat 代理支持
Tomcat MBean 描述符
Tomcat 默認(rèn) Servlet
Tomcat 集群
Tomcat 連接器
Tomcat監(jiān)控與管理
Tomcat 日志機(jī)制
Tomcat 基于 APR 的原生庫(kù)
Tomcat 虛擬主機(jī)
Tomcat 高級(jí) IO 機(jī)制
Tomcat 附加組件
Tomcat 安全性注意事項(xiàng)
Tomcat Windows 服務(wù)
Tomcat Windows 認(rèn)證
Tomcat 的 JDBC 連接池
Tomcat WebSocket 支持
Tomcat 重寫機(jī)制

Tomcat類加載機(jī)制

類加載機(jī)制概述

與很多服務(wù)器應(yīng)用一樣,Tomcat 也安裝了各種類加載器(那就是實(shí)現(xiàn)了 java.lang.ClassLoader 的類)。借助類加載器,容器的不同部分以及運(yùn)行在容器上的 Web 應(yīng)用就可以訪問(wèn)不同的倉(cāng)庫(kù)(保存著可使用的類和資源)。這個(gè)機(jī)制實(shí)現(xiàn)了 Servlet 規(guī)范 2.4 版(尤其是 9.4 節(jié)和 9.6 節(jié))里所定義的功能。

在 Java 環(huán)境中,類加載器的布局結(jié)構(gòu)是一種父子樹(shù)的形式。通常,類加載器被請(qǐng)求加載一個(gè)特定的類或資源時(shí),它會(huì)先把這一請(qǐng)求委托給它的父類加載器,只有(一個(gè)或多個(gè))父類加載器無(wú)法找到請(qǐng)求的類或資源時(shí),它才開(kāi)始查看自身的倉(cāng)庫(kù)。注意,Web 應(yīng)用的類加載器模式跟這個(gè)稍有不同,下文將詳細(xì)介紹,但基本原理是一樣。

當(dāng) Tomcat 啟動(dòng)后,它就會(huì)創(chuàng)建一組類加載器,這些類加載器被布局成如下圖所示這種父子關(guān)系,父類加載器在子類加載器之上:

      Bootstrap

          |

       System

          |

       Common-

       /     \

  Webapp1   Webapp2 ...

接下來(lái),通過(guò)幾節(jié)內(nèi)容來(lái)詳細(xì)說(shuō)明每一個(gè)類加載器的特點(diǎn),其中還將講解這些加載器可使用的類和資源的來(lái)源。

類加載器定義

如上圖所示,Tomcat 在初始化時(shí)會(huì)創(chuàng)建如下這些類加載器:

  • Bootstrap 這種類加載器包含 JVM 所提供的基本的運(yùn)行時(shí)類,以及來(lái)自系統(tǒng)擴(kuò)展目錄($JAVA_HOME/jre/lib/ext)里 JAR 文件中的類。注意:在有些 JVM 的實(shí)現(xiàn)中,它的作用不僅僅是類加載器,或者它可能根本不可見(jiàn)(作為類加載器)。
  • System 這種類加載器通常是根據(jù) CLASSPATH 環(huán)境變量?jī)?nèi)容進(jìn)行初始化的。所有的這些類對(duì)于 Tomcat 內(nèi)部類以及 Web 應(yīng)用來(lái)說(shuō)都是可見(jiàn)的。不過(guò),標(biāo)準(zhǔn)的 Tomcat 啟動(dòng)腳本($CATALINA_HOME/bin/catalina.sh 或 %CATALINA_HOME%\bin\catalina.bat)完全忽略了 CLASSPATH 環(huán)境變量自身的內(nèi)容,相反從下列倉(cāng)庫(kù)來(lái)構(gòu)建系統(tǒng)類加載器:
  • $CATALINA_HOME/bin/bootstrap.jar 包含用來(lái)初始化 Tomcat 服務(wù)器的 main() 方法,以及它所依賴的類加載器實(shí)現(xiàn)類
  • $CATALINA_BASE/bin/tomcat-juli.jar 或 $CATALINA_HOME/bin/tomcat-juli.jar 日志實(shí)現(xiàn)類。其中包括了對(duì) java.util.logging API 的功能增強(qiáng)類(Tomcat JULI),以及對(duì) Tomcat 內(nèi)部使用的 Apache Commons 日志庫(kù)的包重命名副本。詳情參看 Tomcat 日志文檔。
如果 *$CATALINA_BASE/bin*?中存在 `tomcat-juli.jar`,
就不會(huì)使用 *$CATALINA_HOME/bin*?中的那一個(gè)。它有助于日志的特定配置。 ??
  • $CATALINA_HOME/bin/commons-daemon.jar Apache Commons Daemon 項(xiàng)目的類。該 JAR 文件并不存在于由 catalina.bat 或 catalina.sh 腳本所創(chuàng)建的 CLASSPATH 中,而是引用自 bootstrap.jar 的清單文件。
  • Common 這種類加載器包含更多的額外類,它們對(duì)于Tomcat 內(nèi)部類以及所有 Web 應(yīng)用都是可見(jiàn)的。

通常,應(yīng)用類不會(huì)放在這里。該類加載器所搜索的位置定義在 $CATALINA_BASE/conf/catalina.properties 的 common.loader 屬性中。默認(rèn)的設(shè)置會(huì)搜索下列位置(按照列表中的上下順序)。

  • $CATALINA_BASE/lib 中的解包的類和資源
  • $CATALINA_BASE/lib 中的 JAR 文件。
  • $CATALINA_HOME/lib 中的解包類和資源
  • $CATALINA_HOME/lib 中的 JAR 文件。

默認(rèn),它包含以下這些內(nèi)容:

  • annotations-api.jar JavaEE 注釋類。
  • catalina.jar Tomcat 的 Catalina servlet 容器部分的實(shí)現(xiàn)。
  • catalina-ant.jar Tomcat Catalina Ant 任務(wù)。
  • catalina-ha.jar 高可用性包。
  • catalina-storeconfig.jar
  • catalina-tribes.jar 組通信包
  • ecj-*.jar Eclipse JDT Java 編譯器
  • el-api.jar EL 3.0 API
  • jasper.jar Tomcat Jasper JSP 編譯器與運(yùn)行時(shí)
  • jasper-el.jar Tomcat Jasper EL 實(shí)現(xiàn)
  • jsp-api.jar JSP 2.3 API
  • servlet-api.jar Servlet 3.1 API
  • tomcat-api.jar Tomcat 定義的一些接口
  • tomcat-coyote.jar Tomcat 連接器與工具類。
  • tomcat-dbcp.jar 數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn),基于 Apache Commons Pool 的包重命名副本和 Apache Commons DBCP。
  • tomcat-i18n-**.jar 包含其他語(yǔ)言資源束的可選 JAR。因?yàn)槟J(rèn)的資源束也可以包含在每個(gè)單獨(dú)的 JAR 文件中,所以如果不需要國(guó)際化信息,可以將其安全地移除。
  • tomcat-jdbc.jar 一個(gè)數(shù)據(jù)庫(kù)連接池替代實(shí)現(xiàn),又被稱作 Tomcat JDBC 池。詳情參看JDBC 連接池文檔。
  • tomcat-util.jar Apache Tomcat 多種組件所使用的常用類。
  • tomcat-websocket.jar WebSocket 1.1 實(shí)現(xiàn)
  • websocket-api.jar WebSocket 1.1 API
  • WebappX 為每個(gè)部署在單個(gè) Tomcat 實(shí)例中的 Web 應(yīng)用創(chuàng)建的類加載器。你的 Web 應(yīng)用的 /WEB-INF/classes 目錄中所有的解包類及資源,以及 /WEB-INF/lib 目錄下 JAR 文件中的所有類及資源,對(duì)于該應(yīng)用而言都是可見(jiàn)的,但對(duì)于其他應(yīng)用來(lái)說(shuō)則不可見(jiàn)。

如上所述,Web 應(yīng)用類加載器背離了默認(rèn)的 Java 委托模式(根據(jù) Servlet 規(guī)范 2.4 版的 9.7.2 Web Application Classloader一節(jié)中提供的建議)。當(dāng)某個(gè)請(qǐng)求想從 Web 應(yīng)用的 WebappX 類加載器中加載類時(shí),該類加載器會(huì)先查看自己的倉(cāng)庫(kù),而不是預(yù)先進(jìn)行委托處理。There are exceptions。JRE 基類的部分類不能被重寫。對(duì)于一些類(比如 J2SE 1.4+ 的 XML 解析器組件),可以使用 J2SE 1.4 支持的特性。最后,類加載器會(huì)顯式地忽略所有包含 Servlet API 類的 JAR 文件,所以不要在 Web 應(yīng)用包含任何這樣的 JAR 文件。Tomcat 其他的類加載器則遵循常用的委托模式。

因此,從 Web 應(yīng)用的角度來(lái)看,加載類或資源時(shí),要查看的倉(cāng)庫(kù)及其順序如下:

  • JVM 的 Bootstrap 類
  • Web 應(yīng)用的 /WEB-INF/classes 類
  • Web 應(yīng)用的 /WEB-INF/lib/*.jar 類
  • System 類加載器的類(如上所述)
  • Common 類加載器的類(如上所述)

如果 Web 應(yīng)用類加載器配置有 ,則順序變?yōu)椋?/span>

  • JVM 的 Bootstrap 類
  • System 類加載器的類(如上所述)
  • Common 類加載器的類(如上所述)
  • Web 應(yīng)用的 /WEB-INF/classes 類
  • Web 應(yīng)用的 /WEB-INF/lib/*.jar 類

XML解析器和 Java

從 Java 1.4 版起,JRE 就包含了一個(gè) JAXP API 的副本和一個(gè) XML 解析器。這對(duì)希望使用自己的 XML 解析器的應(yīng)用產(chǎn)生了一定的影響。

在過(guò)去的 Tomcat 中,你只需在 Tomcat 庫(kù)中簡(jiǎn)單地?fù)Q掉 XML 解析器,就能改變所有 Web 應(yīng)用使用的解析器。但對(duì)于現(xiàn)在版本的 Java 而言,這一技術(shù)并沒(méi)有效果,因?yàn)橥ǔ5念惣虞d器委托進(jìn)程往往會(huì)優(yōu)先選擇 JDK 內(nèi)部的實(shí)現(xiàn)。

Java 支持一種叫做“授權(quán)標(biāo)準(zhǔn)覆蓋機(jī)制”,從而能夠替換在 JCP 之外創(chuàng)建的 API(例如 W3C 的 DOM 和 SAX)。它還可以用于更新 XML 解析器實(shí)現(xiàn)。關(guān)于此機(jī)制的詳情,請(qǐng)參看 http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html為了利用該機(jī)制,Tomcat 在啟動(dòng)容器的命令行中包含了系統(tǒng)屬性設(shè)置 -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS。該選項(xiàng)的默認(rèn)值為 $CATALINA_HOME/endorsed。但要注意,這個(gè) endorsed 目錄并非默認(rèn)創(chuàng)建的。

安全管理器下運(yùn)行

當(dāng)在安全管理器下運(yùn)行時(shí),類被允許加載的位置也是基于策略文件中的內(nèi)容,詳情可查看 安全管理器文檔。

全部教程
主站蜘蛛池模板: 激情综合网五月 | 青青草国产在线 | 波多野结衣手机在线视频 | 日韩日韩| 97国产成人精品免费视频 | 日本久久精品免视看国产成人 | 亚洲成人一级片 | 福利在线观看视频 | 天天躁夜夜躁狠狠躁 | 国产成人禁片免费观看视频 | 成人性动漫高清免费观看网址 | 成人区精品一区二区不卡亚洲 | 亚洲精彩视频 | 亚洲国产成人久久综合区 | 黄色三级视频在线观看 | 国产一区二区视频在线 | jizjizjizji在线观看 | 久久综合久久久 | 国产成人永久在线播放 | 在线观看成年人视频 | 丝袜脚在线 | 3751性欧美视频在线播放 | 亚洲一区在线播放 | 性xxxxxx| 日操操| 一级国产a级a毛片无卡 | 色网站在线免费观看 | 名优写真一区二区在线 | 国产精品福利久久2020 | 成人网中文字幕色 | 亚洲欧美精品中文字幕 | 国产精品秒播无毒不卡 | 国产亚洲免费观看 | 你懂的在线免费视频 | 97欧美在线看欧美视频免费 | 日韩在线观看一区二区不卡视频 | 欧美日韩在线视频专区免费 | 高清一级毛片 | 五月天婷婷在线观看高清 | 日韩婷婷 | xxxx国产 |