小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

tomcat與OSGI:類加載器

 java學(xué)習(xí)278 2012-03-22

Java虛擬機(jī)--類加載器分析

分類: Java虛擬機(jī) 22人閱讀 評(píng)論(0) 收藏 舉報(bào)
 

Tomcat:正統(tǒng)的類加載架構(gòu)。

通常的Java Web服務(wù)器都實(shí)現(xiàn)了自己的類加載器(一般不止一個(gè))。

正常的Web服務(wù)器要解決如下幾個(gè)問題:

(1)部署在一個(gè)服務(wù)器上的兩個(gè)Web應(yīng)用程序所使用的Java類庫可以實(shí)現(xiàn)隔離。

(2)部署在一個(gè)服務(wù)器上的兩個(gè)Web應(yīng)用程序所使用的Java類庫可以實(shí)現(xiàn)共享。

(3)服務(wù)器盡可能的保證自身安全不受部署的Web應(yīng)用程序影響。

(4)支持JSPWeb服務(wù)器,通常都需要支持HotSwap功能。

Tomcat目錄結(jié)構(gòu):

三組目錄(/common/*、/server/*、/shared/*)存放Java類庫,加上應(yīng)用程序本身的 目錄(/WEB-INF/*),一共四組目錄。

(1)common目錄:能被Tomcat和所有Web應(yīng)用程序共享。

(2)server目錄:僅能被Tomcat使用,其他Web應(yīng)用程序不可見。

(3)Shared目錄:可以被所有Web應(yīng)用程序使用,對(duì)Tomcat不可見。

(4)WEB-INF目錄:盡可以被此Web應(yīng)用程序使用,對(duì)其他不可見。

Tomcat類加載器委派關(guān)系:

CommonClassLoader、CatalinaClassLoader、ShareClassLoader、和WebappClassLoader 是 Tomcat自定義加載器,分別對(duì)應(yīng)加載/common/*/server/*、/shared/* /WEB-INF/*類庫, 其中Webapp類加載器和Jsp類加載器會(huì)存在多個(gè),每個(gè)Web 應(yīng)用對(duì)應(yīng)一個(gè)Webapp類加 載器,每個(gè)JSP文件對(duì)應(yīng)Jsp類加載器。

Tomcat類加載器分析:

CommonClassLoader加載的類可以被CatalinaClassLoaderShareClassLoader使 用;CatalinaClassLoader加載的類和ShareClassLoader加載的類相互隔離; WebappClassLoader可以使用ShareClassLoader加載的類,但各個(gè) WebappClassLoader間相互隔離;JspClassLoader僅能用JSP文件編譯的class文件。

OSGi:靈活的類加載結(jié)構(gòu)。

OSGiOpen Service Gateway Initiative):OSGi聯(lián)盟定制的基于Java語言 的動(dòng)態(tài)模塊化規(guī)范。

OSGi的模塊(Bundle)與普通Java區(qū)別:兩者區(qū)別并不太大,都是以JAR 格式封裝,并且內(nèi)部存儲(chǔ)都是Java PackageClass。但是Bundle可以聲明依賴Java Package,也可以聲明它導(dǎo)出發(fā)布的Java PackageBundle從傳統(tǒng)上層模塊依 賴轉(zhuǎn)變?yōu)槠郊?jí)模塊依賴。QSGiBundle類加載器之間只有規(guī)則,沒有固定委派關(guān) 系。

OSGi類加載器關(guān)系:

某個(gè)Bundle聲明依賴的Package,如果有其他Bundle發(fā)布了此Package,則對(duì)這個(gè) 個(gè)package的所有類加載動(dòng)作會(huì)委派它的Bundle了類加載器去完成。

例如:

BundleA:聲明發(fā)布PackageA,依賴java.*的包;

BundleB:聲明依賴PackageAPackageC,也同時(shí)依賴java.*;

BundleC:聲明發(fā)布PackageC,同時(shí)聲明依賴PackageA。

則關(guān)系圖如下:

OSGi類加載器分析:

可以看出,OSGi類加載器之間不再是雙親委派模型的樹形結(jié)構(gòu),而是進(jìn)一步發(fā)展成 為一種運(yùn)行時(shí)才能確定的網(wǎng)狀結(jié)構(gòu)。這種網(wǎng)狀類加載器結(jié)構(gòu)擁有更優(yōu)秀的靈活性, 同時(shí)也有許多隱患,由于各模塊間依賴關(guān)系錯(cuò)綜復(fù)雜,高并發(fā)量下容易發(fā)生死鎖等 問題。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多