亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Tomcat架構(四)

系統 2126 0
8標準覆蓋機制
J2SE 1.4 and 1.5 都包含了一個XML處理解析器的Java API 。Bootstrap 類加載器加載這個解析器的類文件,所以這個解析器會優先于任何一個安裝在CLASSPATH里的解析器 被加載,即使您已經安裝了新版本的解析器。標準覆蓋機制允許您重寫JAVA_HOME/lib/endorsed文件夾里某些特定的類(例如CORBA 和 JAXP 類)。Bootstrap 類加載器將會優先加載這些類。想詳細了解此機制,請訪問http://java.sun.com/j2se/1.5.0/docs/guide/standards/ 。

有關類加載的一些有趣的注意事項如下所示:
? 只有當一個類具有包名、類名以及加載此類文件的類加載器的實例的時候,一個類才會被認為完全合格。換句話說,同樣的類被兩個不同的類加載器加載,會被認為是兩個不同的類。即使在同一個JVM中,這已影響到這個類實例的分配、靜態屬性或單例的處理。
? 一個類加載器只能看到位于它層次結構上面的類的目錄。例如,一個Extension文件夾里的 JAR不能使用應用程序類路徑里的類文件。這是因為,Extension文件夾里的類只能看到Extension類加載器以及Bootstrap 類加載器可以加載的類。
? 當一個類的代碼中引用了另一個類時,加載引用類的類加載器同樣也會加載被引用的 類,這稱為自定義類加載器。一個類的自定義類加載器可以使用Class.getClassLoader()來獲得。
? 每個線程都有一個上下文類加載器,使用Thread.currentThread(). getContextClassLoader()可以查看到。每次一個新的線程被創建,這個新線程的上下文類加載器會被設置到它的創建線程。main()線程的類加載器是應用程序類加載器,它會自動向下傳播到每個工作線程,除非您通過調用 Thread.currentThread() .setContextClassLoader() 進行干預。
9JavaEE類加載
在JavaEE的范疇里這種模式顯得有些別扭。
首先,Servlet容器需要為web應用提供一個限制環境。
如果某個servlet直接使用系統類加載器(System CalssLoader),那么該servlet會看到啟動Tocmat時所使用JVM命令中所使用的path下的所有類。這是有潛在安全風險的,因為惡意應用(部署在同一個主機商的主機上的應用)可能被允許加載到其兄弟節點上的web應用的類。正是因為如此,每個web應用必須有自己的類加載器,而該類加載器位于類加載器樹的根節點并且可以優先加載在web應用的目錄WEB-INF/classes以及WEB-INF/lib下所發現的類。
當所請求加載的類是java標準時,該自定義類加載器將只委托其父類加載器來加載;如果一個web應用還需要其他的類,那么這個自定義類加載器不是去委托其父類去加載,而是首先檢查WEB-INF/classes以及WEB-INF/lib中是否包含該類。只有在這兩個目錄都找不到時,該類加載器才會委托給其父類加載器來加載,而父類加載器的的加載遵循標準委托模式。(譯注:類加載相關知識請看文章末尾)。

Tomcat的額外類加載器
Tomcat架構(四)
在啟動過程中,Tomcat首先通過清除CLASSPATH并將其重新指向CATALINA_HOME/bin/bootstrap.jar(Tomcat啟動所需的類)、tomcat-juli(日志功能)、tools.jar(jsp編譯功能)來屏蔽系統類加載器(System ClassLoader)。這使得系統類加載器只有在加載一小部分Tomcat特殊類時才起作用。?
同時Tomcat也改變了支持目錄并將其重新指向CATALINA_HOME/endorsed目錄。
在其自定類加載器之下,Tomcat又增加了它自己的類加載器,這其中包括server類加載器(Server class loader)、共享類加載器(Shared class loader)、通用類加載器(Common class loader)以及每個部署的應用程序都有的一個web應用程序類裝入器。
當一個web應用需要加載一個類時,請求首先發送至web應用的類加載器,該加載器負責加載web應用中WEB-INF/classes和WEB-INF/lib兩個目錄下的類。
web應用類加載器首先會請求系統類加載器來允許各層類加載器可以查找所有java核心類。當所請求的類未找到到時,該web應用類加載器會嘗試從自身類庫中定位所請求的類;如果仍然未找到,它將委托通用類加載器或者如果有共享類加載器時委托共享類加載器來加載。?
共享類加載器和服務器類加載器默認情況下是沒有安裝的,但是我們可以通過編輯 CATALINA_HOME/conf/catalina.properties文件通過增加shared.loader和server.loader來開啟共享類加載器以及server類加載器;而Common類加載器會監控CATALINA_HOME/lib目錄的內容,該下為一些蟬蛹的jar包,比如servlet-api.jar, jasper.jar, coyote.jar, and jsp-api.jar。此外,位于共享目錄下的類將對所有web應用可見,但不是Tomcat的內部類,而放在服務器的loader目錄的類將只對Tomcat內部類可見。
10web應用中的類重載
使Tomcat支持類重載的web應用特定類加載器。
當context需要被新部署或者當一個類需要被重載時(例如當一個被重新編譯過的類文件加入到WEB-INF/classes目錄時),整個web應用的類加載器都會被拋棄,然后創建一個新的實例分支來加載該web應用的所有類。該新的類加載就是用來為之后的請求服務的。
11Logger
server.xml中的logger元素在Tomcat5.5中就已經被棄用;所以在Tomcat6中是基于Java1.4中所引入的日志API來生成日志的。
然而Java日志只能在整個JVM級別來進行配置,而不能對每個類加載器單獨配置。為了使每個web應用程序都能允許不同的配置文件,Tomcat實現了自定義的Java日志,這就是我們所熟知的JULI,該實現位于CATALINA_HOME/bin/tomcat-juli.jar中。
全局的配置文件CATALINA_HOME/conf/logging.properties控制著日志設置。此外,每個web應用也可以有自己的日志配置文件WEB-INF/classes/logging.properties。 Tomcat架構(四)
如上圖所示,日志由一下組件組成:?
● Logger:所有的日志請求會進入Logger對象。這些對象都按層次排列,其根在根logger;同時這種層次結構也反映了包結構。在該層次中屬性可以被綁定到任何級別上,而且Logger的子類也會繼承器父類屬性。
● Handler:指定日志消息應該發送何處。可選的有ConsoleHandler(將日志寫入控制臺)、FileHandler(將日志寫入文件)、SocketHandler(將日志寫入Tcp socket)。
● Level(日志級別):日志級別有其中:SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、OFF(禁用)、ALL(記錄所有信息),每種級別決定了需要記錄何種類型的消息。
●Formatter(日志格式化):該元素決定了信息以什么格式展示。Tomcat提供了SimpleFormatter、XMLFormatter兩種格式化工具。
12資源(Resource)
和web應用上下文相關的資源包括靜態資源,如類文件、HTML、JSP、CSS文件。這些資源可能以不同的格式存在。默認情況下,Tomcat支持從war格式的壓縮文件(譯注:war包)或者解壓過的war中查找資源文件。
可想而知,一個上下文中的資源也可能從替代存儲機制中訪問,比如JDBC數據庫。而資源組件使之成為可能。
Tomcat同時也提供基于目錄服務的JNDI API,該服務可支持從未知存儲方式中讀取資源。
總結
這里講了很多,現在我們需要做的就是使自己理解Tomcat架構總覽中所講解的東西。在這篇文章里,我們討論了一些Tomcat的核心組件,看到了一個運行中的Tomcat實例是如何由各種頂級組件、連接器(Connector)以及嵌套組件構建起來的。

Tomcat架構(四)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色天天综合久久久久综合片 | 欧美99视频 | 一本久道久综合久久鬼色 | 免费的成人a视频在线观看 免费的黄色网 | 国产精品第九页 | 久久国产精品视频一区 | 精品亚洲综合久久中文字幕 | 一级一片 | 欧美夜夜| 99久久99久久 | 亚洲永久精品一区二区三区 | 日日夜夜中文字幕 | 99r精品视频 | 九九热精品 | se色综合视频| 欧美日韩国产58香蕉在线视频 | 99精品视频免费观看 | 欧美日韩福利视频一区二区三区 | 亚洲国产精品第一区二区 | 狠狠色丁香久久婷婷综合五月 | 激情综合色综合啪啪开心 | 青青成人 | 伊人丁香狠狠色综合久久 | 91av最新地址 | 成年人网站在线 | 性欧美高清久久久久久久 | 国产精品a人片在线观看 | 欧美精品成人一区二区视频一 | 国产一区二区三区在线影院 | 亚洲 欧洲 自拍 另类 校园 | a毛片久久免费观看 | 天天干天天综合 | 日本伦理中文字幕 | 激情综合五月婷婷 | 青青青爽国产在线视频 | 天天干夜夜草 | 久久视频在线观看免费 | 色婷婷.com| 成人免费久久精品国产片久久影院 | 成人性生活免费视频 | 国产成人在线免费观看 |