CommonClassLoader或SharedClassLoader加載的Spring如何訪問並不在其加載范圍內的用戶程序呢


Question

引自《深入理解Java虛擬機—JVM高級特性與最佳實踐》9.2.1,p235

如果有10個WEB應用程序都是用spring來進行組織管理的話,可以把Spring放到Common或Shared目錄下(Tomcat5.0)讓這些程序共享。Spring要對用戶程序的類進行管理,自然要能訪問到用戶程序的類,而用戶程序顯然是放在/WEB-INF目錄中的。那么被

object 就是調用者,假設它所在類A的ClassLoader是User-defined ClassLoaderA,那么它在doing里面裝載B類使用的ClassLoader就是默User-defined ClassLoaderA。我們再假設A只能被User-defined ClassLoaderA裝載,B只能被User-defined ClassLoaderB裝載,如下圖關系:

這里寫圖片描述

那么可以看出按照雙親委派模型,object 所在的A類是無法加載B類的,因為模型的特點就是只能向上加載不能向下。回到我們的問題:Spring就好像類A,用戶程序就好像類B,那么Spring如何加載用戶程序的類呢?實際上在《深入理解Java虛擬機—JVM高級特性與最佳實踐》7.4.3,p195,里面已經說了,使用上下文類加載器就可以實現“向下加載”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM