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

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)容,詳情可查看 安全管理器文檔。

全部教程
主站蜘蛛池模板: 国产69精品久久久久9牛牛 | 欧美日韩国产高清精卡 | 有码视频在线观看 | 天天色综合社区 | 在线免费观看日韩视频 | 久久午夜激情 | 国产视频你懂的 | 婷婷色综合成人成人网小说 | 中文精品北条麻妃中文 | 久久精品成人免费网站 | 亚洲va欧美va国产va天堂影 | 黄色毛片视频 | 亚洲日本韩国欧美 | 免费人成在线蜜桃视频 | 久久久久久久99精品免费观看 | 国产精品久久亚洲一区二区 | 国产成人精品曰本亚洲77美色 | www日本黄色 | 欧美一区二区三区在线可观看 | japan高清视频乱xxxxx | 欧美成人综合 | 一级做a爱过程免费观看 | 九九精品免费视频 | 成人在线第一页 | 最近中文字幕网2019 | 韩国三级理伦片 | 天天爽天天乐 | 午夜影院普通 | 又黄又爽又色又刺激的视频 | 亚洲成人一区 | 日韩成人免费一级毛片 | h肉动漫无遮挡在线观看免费 | 日日爽天天干 | 精品在线一区 | 成人网中文字幕色 | 成人毛片免费看 | 日本免费黄网 | 欧美午夜艳片欧美精品 | 色色免费 | 国产精品视频在 | 欧美性大战久久久久久久蜜桃 |