posts - 156,  comments - 601,  trackbacks - 0
              Tomcat6 類裝載器的實(shí)現(xiàn)都是通過繼承于JDK中的 java.lang.ClassLoader類。
              包括Bootstrap,System,Common和Webapp這四種類加載器來實(shí)現(xiàn)不同目錄的類文件裝載。
              示例結(jié)構(gòu)如下:
                Bootstrap
                    |
                 System
                    |
                 Common
                 /     \
            Webapp1   Webapp2 ...

            Bootstrap 類裝載器:
                它用于加載最基本的JVM運(yùn)行環(huán)境類,裝載JDK目錄下類文件($JAVA_HOME/jre/lib/ext)
                使用它的目的是以防一些JVM提供商實(shí)現(xiàn)時(shí),可能考慮某些原因會(huì)把部分的類文件通過不同的多個(gè)類加載加器加載,同時(shí)會(huì)
                屏蔽一些類加載讓應(yīng)用層的類加載器訪問到。
              System 類裝載器:
                  該類裝載器根據(jù)JVM的CLASSPATH參數(shù)設(shè)置裝載類文件,該類裝載器對(duì)于Tomcat內(nèi)部的程序和應(yīng)用層的程序都是可見的。
                  注:目前tomcat5的啟動(dòng)腳本($CATALINA_HOME/bin/catalina.sh 或 %CATALINA_HOME%\bin\catalina.bat),會(huì)把全局環(huán)境變量CLASSPATH忽略。
                      而且通過下面的兩個(gè)類庫來實(shí)現(xiàn)裝載設(shè)置:
                      * $CATALINA_HOME/bin/bootstrap.jar 包含一個(gè)main()方法來初始化tomcat6服務(wù),并實(shí)例類裝器所依賴的類文件。
                      * $CATALINA_HOME/bin/tomcat-juli.jar 初始Jakarta commons logging API和 java.util.logging LogManager.
              Common 類裝載器
                  該類裝載器對(duì)于Tomcat內(nèi)部的程序和應(yīng)用層的程序都是可見的.
                  當(dāng)然不太建議把應(yīng)用層的類庫放到這里來加載。
                  所有$CATALINA_HOME/lib目錄下未壓縮的類文件,資源和壓縮后Jar/zip文件都會(huì)補(bǔ)該類裝載器加載。
                 
                  Tomcat6默認(rèn)該目錄的類文件有:
                  * annotations-api.jar - JEE annotations classes.
                  * catalina.jar - Implementation of the Catalina servlet container portion of Tomcat6.
                  * catalina-ant.jar - Tomcat Catalina Ant tasks.
                  * catalina-ha.jar - High availability package.
                  * catalina-tribes.jar - Group communication package.
                  * el-api.jar - EL 2.1 API.
                  * jasper.jar - Jasper 2 Compiler and Runtime.
                  * jasper-el.jar - Jasper 2 EL implementation.
                  * jasper-jdt.jar - Eclipse JDT 3.2 Java compiler.
                  * jsp-api.jar - JSP 2.1 API.
                  * servlet-api.jar - Servlet 2.5 API.
                  * tomcat-coyote.jar - Tomcat connectors and utility classes.
                  * tomcat-dbcp.jar - package renamed database connection pool based on Commons DBCP.
                  * tomcat-i18n-**.jar - Optional JARs containing resource bundles for other languages. As default bundles are also included in each individual JAR, they can be safely removed if no internationalization of messages is needed.

              Webapp 類裝載器:
                應(yīng)用層的類裝載器,每個(gè)應(yīng)用程序都會(huì)創(chuàng)建一個(gè)單獨(dú)的類裝載器。該類裝載器只能本應(yīng)用程序中可見。
                所有/WEB-INF/classes目錄下未壓縮的類文件,資源文件都會(huì)補(bǔ)該類裝載器加載。
                所有/WEB-INF/lib目錄下壓縮后Jar/zip文件都會(huì)補(bǔ)該類裝載器加載。


              把各個(gè)類裝載器的定義整理出來后,Tomcat6服務(wù)器類裝載器執(zhí)行的順序如下:
             
              * Bootstrap classes of your JVM
              * System class loader classses (described above)
              * /WEB-INF/classes of your web application
              * /WEB-INF/lib/*.jar of your web application
              * $CATALINA_HOME/lib
              * $CATALINA_HOME/lib/*.jar

          Good Luck!
          Yours Matthew!
          posted on 2008-09-27 19:24 x.matthew 閱讀(2867) 評(píng)論(2)  編輯  收藏 所屬分類: Application Server
          主站蜘蛛池模板: 桐庐县| 时尚| 兴城市| 雅江县| 阿拉尔市| 华池县| 湘潭市| 灵山县| 那曲县| 萝北县| 闽清县| 清苑县| 泊头市| 炎陵县| 绥阳县| 都匀市| 姚安县| 金沙县| 改则县| 蒲江县| 邵阳县| 绥宁县| 阜南县| 西丰县| 鸡西市| 灵台县| 宁都县| 东乌| 江油市| 灵石县| 于田县| 新化县| 军事| 灌云县| 邻水| 法库县| 鲁甸县| 昂仁县| 五峰| 前郭尔| 敦煌市|