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

            Bootstrap 類裝載器:
                它用于加載最基本的JVM運行環境類,裝載JDK目錄下類文件($JAVA_HOME/jre/lib/ext)
                使用它的目的是以防一些JVM提供商實現時,可能考慮某些原因會把部分的類文件通過不同的多個類加載加器加載,同時會
                屏蔽一些類加載讓應用層的類加載器訪問到。
              System 類裝載器:
                  該類裝載器根據JVM的CLASSPATH參數設置裝載類文件,該類裝載器對于Tomcat內部的程序和應用層的程序都是可見的。
                  注:目前tomcat5的啟動腳本($CATALINA_HOME/bin/catalina.sh 或 %CATALINA_HOME%\bin\catalina.bat),會把全局環境變量CLASSPATH忽略。
                      而且通過下面的兩個類庫來實現裝載設置:
                      * $CATALINA_HOME/bin/bootstrap.jar 包含一個main()方法來初始化tomcat6服務,并實例類裝器所依賴的類文件。
                      * $CATALINA_HOME/bin/tomcat-juli.jar 初始Jakarta commons logging API和 java.util.logging LogManager.
              Common 類裝載器
                  該類裝載器對于Tomcat內部的程序和應用層的程序都是可見的.
                  當然不太建議把應用層的類庫放到這里來加載。
                  所有$CATALINA_HOME/lib目錄下未壓縮的類文件,資源和壓縮后Jar/zip文件都會補該類裝載器加載。
                 
                  Tomcat6默認該目錄的類文件有:
                  * 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 類裝載器:
                應用層的類裝載器,每個應用程序都會創建一個單獨的類裝載器。該類裝載器只能本應用程序中可見。
                所有/WEB-INF/classes目錄下未壓縮的類文件,資源文件都會補該類裝載器加載。
                所有/WEB-INF/lib目錄下壓縮后Jar/zip文件都會補該類裝載器加載。


              把各個類裝載器的定義整理出來后,Tomcat6服務器類裝載器執行的順序如下:
             
              * 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 閱讀(2862) 評論(2)  編輯  收藏 所屬分類: Application Server
          主站蜘蛛池模板: 东乡| 哈尔滨市| 巴马| 乌拉特前旗| 营山县| 武穴市| 祁连县| 岗巴县| 新沂市| 监利县| 甘孜县| 鹿泉市| 海淀区| 章丘市| 巢湖市| 玉环县| 余姚市| 通河县| 阿鲁科尔沁旗| 宜都市| 海宁市| 台东市| 隆德县| 东兰县| 永嘉县| 崇信县| 札达县| 洛阳市| 延边| 南宁市| 陈巴尔虎旗| 盖州市| 临沭县| 景宁| 双辽市| 邻水| 定西市| 开化县| 宜都市| 聊城市| 泌阳县|