摘要:類加載模型為了支持這套目錄結構,并對目錄里面的類庫進行加載和隔離,自定義了多個類加載器,這些類加載器按照經典的雙親委派模型來實現,如下圖所示加載問題加載器的實現清晰易懂,并且采用了官方推薦的正統的使用類加載器的方式。
一個功能健全的Web服務器,要解決如下幾個問題
部署在同一個服務器上的兩個Web應用程序使用的Java類庫可以實現相互隔離。不能要求一個類庫在一個服務器中只有一份,服務器應當保證兩個應用程序的類庫可以互相獨立使用。
部署在同一個服務器上的兩個Web應用程序所使用的Java類庫可以互相共享,如果Java類庫不能共享使用,虛擬機的方法區很容易出現過度膨脹的風險,比如一臺服務器上部署了10個使用Spring的程序。
服務器需要盡可能保證自身安全不受部署的Web應用程序影響。服務器所使用的類庫應該與應用程序使用的類庫互相獨立。
支持JSP的服務器,大部分都需要支持HotSwap功能(熱交換功能)
tomcat的lib目錄結構Tomcat目錄結構中,有三組目錄(“/common/”,“/server/”和“shared/”)可以存放公用Java類庫,此外還有第四組Web應用程序自身的目錄“/WEB-INF/”,把java類庫放置在這些目錄中的含義分別是:
放置在common目錄中:類庫可被Tomcat和所有的Web應用程序共同使用。
放置在server目錄中:類庫可被Tomcat使用,但對所有的Web應用程序都不可見。
放置在shared目錄中:類庫可被所有的Web應用程序共同使用,但對Tomcat自己不可見。所有jar都合在lib包下
放置在/WebApp/WEB-INF目錄中:類庫僅僅可以被此Web應用程序使用,對Tomcat和其他Web應用程序都不可見。
注:tomcat 在6以后。廢棄了/common目錄,默認沒有shared目錄。
tomcat類加載模型為了支持這套目錄結構,并對目錄里面的類庫進行加載和隔離,Tomcat自定義了多個類加載器,這些類加載器按照經典的雙親委派模型來實現,如下圖所示 :
Tomcat 加載器的實現清晰易懂,并且采用了官方推薦的“正統”的使用類加載器的方式。這時作者提一個問題:如果有 10 個 Web 應用程序都用到了spring的話,可以把Spring的jar包放到 common 或 shared 目錄下讓這些程序共享。Spring 的作用是管理每個web應用程序的bean,getBean時自然要能訪問到應用程序的類,而用戶的程序顯然是放在 /WebApp/WEB-INF 目錄中的(由 WebAppClassLoader 加載),那么在 CommonClassLoader 或 SharedClassLoader 中的 Spring 容器如何去加載并不在其加載范圍的用戶程序(/WebApp/WEB-INF/)中的Class呢?
spring加載解答spring根本不會去管自己被放在哪里,它統統使用線程上下文加載器來加載類,而線程上下文加載器默認設置為了WebAppClassLoader,也就是說哪個WebApp應用調用了spring,spring就去取該應用自己的WebAppClassLoader來加載bean。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69572.html
摘要:第章內存區域與內存溢出異常運行時數據區域虛擬機在執行程序的過程中會把它所管理的內存劃分為若干個不同的數據區域。即對象指向它的類元數據的指針,虛擬機通過這個指針來確定這個對象是哪個類的實例。 第2章 Java內存區域與內存溢出異常 2.2 運行時數據區域 Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區域。根據《Java虛擬機規范(Java SE 7版)...
摘要:作用負責將加載到中審查每個類由誰加載父優先的等級加載機制將字節碼重新解析成統一要求的對象格式類結構分析為了更好的理解類的加載機制,我們來深入研究一下和他的方法。就算兩個是同一份字節碼,如果被兩個不同的實例所加載,也會認為它們是兩個不同。 申明:本文首發于 詳細深入分析 ClassLoader 工作機制 ,如有轉載,注明原出處即可,謝謝配合。 什么是 ClassLoader ? 大家...
摘要:示例如下動態類重新加載動態類重新加載有一些挑戰。為了上面代碼的正常運行,你當然需要實現自己的類加載器,讓接口或超類由其父類加載。 Java中可以在運行時加載和重新加載類,雖然并不像我們想像中那么簡單。本文將解釋何時、怎樣在Java中加載、重新加載類。你可以爭論動態加載類是Java反射的一部分還是Java核心的一部分。不管怎樣,我把它放在了Java反射中,因為沒有更好的地方放置它。 類加...
閱讀 3093·2021-09-22 15:54
閱讀 3981·2021-09-09 11:34
閱讀 1767·2019-08-30 12:48
閱讀 1161·2019-08-30 11:18
閱讀 3431·2019-08-26 11:48
閱讀 913·2019-08-23 17:50
閱讀 2119·2019-08-23 17:17
閱讀 1240·2019-08-23 17:12