《深入理解java虛擬機器》學習筆記8——Tomcat類載入器體系結構

yangxi_001發表於2013-12-04

Tomcat 等主流Web伺服器為了實現下面的基本功能,都實現了不止一個自定義的類載入器:

(1).部署在同一個伺服器上的兩個web應用程式所使用的java類庫可以相互隔離。

(2).部署在同一個伺服器上的兩個web應用程式所使用的java類庫可以相互共享。

(3).許多Web伺服器本身使用java語言實現,因此伺服器所使用的類庫應與應用程式的類庫相互獨立。

(4).支援JSP應用的Web伺服器,需要支援HotSwap功能,因為JSP檔案最終是被編譯為java的servlet來執行的,當修改JSP檔案時,不需要重啟伺服器就可以實現熱部署。

Tomcat作為JDK推薦的雙親委派模式正統類載入器實現的代表,Tomcat5和Tomcat6類載入體系結構有較大區別:

Tomcat5:

Tomcat5中可以存放java類庫以及Web應用的目錄如下:

(1)./common目錄:類庫可以被Tomcat伺服器本身和所有的Web應用程式共同使用。

(2)./server目錄:類庫可以被Tomcat伺服器本身使用,對應用程式不可見。

(3)./shared目錄:類庫可以被所有的應用程式使用,對Tomcat伺服器本身不可見。

(4)./WebApp/WEB-INF目錄:類庫僅可以被應用程式使用,對其他的應用程式和Tomcat伺服器不可見。

Tomcat5的類載入體系結構如下:

Tomcat6:

Tomcat預設把/common、/server和/shared三個目錄合併成一個/lib目錄,因此Tomcat6預設可以存放java類庫以及Web應用的目錄如下:

(1)./lib目錄:類庫可以被Tomcat伺服器本身和所有的Web應用程式共同使用。

(2)./WebApp/WEB-INF目錄:類庫僅可以被應用程式使用,對其他的應用程式和Tomcat伺服器不可見。

Tomcat6的預設類載入體系結構如下:


在Tomcat6中,可以通過指定<Tomcat安裝目錄>/conf/catalina.properties屬性檔案中的server.loader和share.loader建立和Tomcat5類似的ServerClassLoader和SharedClassLoader。

相關文章