posts - 156,  comments - 601,  trackbacks - 0
              Tomcat5.5 類裝載器的實(shí)現(xiàn)都是通過(guò)繼承于JDK中的 java.lang.ClassLoader類。
              包括Bootstrap,System,Common, Catalina, Shared和Webapp這六種類加載器來(lái)實(shí)現(xiàn)不同目錄的類文件裝載。
             
                Bootstrap
                    |
                 System
                    |
                 Common
                /      \
           Catalina   Shared
                       /   \
                  Webapp1  Webapp2 ...


            Bootstrap 類裝載器:
                它用于加載最基本的JVM運(yùn)行環(huán)境類,裝載JDK目錄下類文件($JAVA_HOME/jre/lib/ext)
                使用它的目的是以防一些JVM提供商實(shí)現(xiàn)時(shí),可能考慮某些原因會(huì)把部分的類文件通過(guò)不同的多個(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忽略。
                  而且通過(guò)下面的幾個(gè)類庫(kù)來(lái)實(shí)現(xiàn)裝載設(shè)置:
                  * $CATALINA_HOME/bin/bootstrap.jar 包含一個(gè)main()方法來(lái)初始化tomcat5服務(wù),并實(shí)例類裝器所依賴的類文件。
                  * $CATALINA_HOME/bin/tomcat-juli.jar 初始Jakarta commons logging API和 java.util.logging LogManager.
                  * $CATALINA_HOME/bin/commons-logging-api-x.y.z.jar - Jakarta commons logging API.
                  * $CATALINA_HOME/bin/commons-daemon.jar - Jakarta commons daemon API.
                  * jmx.jar - The JMX 1.2 implementation.
              Common 類裝載器
                  該類裝載器對(duì)于Tomcat內(nèi)部的程序和應(yīng)用層的程序都是可見的.
                  當(dāng)然不太建議把應(yīng)用層的類庫(kù)放到這里來(lái)加載。
                  所有$CATALINA_HOME/lib目錄下未壓縮的類文件,資源和壓縮后Jar/zip文件都會(huì)補(bǔ)該類裝載器加載。
                 
                  Tomcat5.5默認(rèn)該目錄的類文件有:
                  * commons-el.jar - Jakarta commons el, implementing the expression language used by Jasper.
                  * jasper-compiler.jar - The JSP 2.0 compiler.
                  * jasper-compiler-jdt.jar - The Eclipse JDT Java compiler.
                  * jasper-runtime.jar - The JSP 2.0 runtime.
                  * jsp-api.jar - The JSP 2.0 API.
                  * naming-common.jar - The JNDI implementation used by Tomcat 5 to represent in-memory naming contexts.
                  * naming-factory.jar - The JNDI implementation used by Tomcat 5 to resolve references to enterprise resources (EJB, connection pools).
                  * naming-factory-dbcp.jar - Jakarta commons DBCP, providing a JDBC connection pool to web applications. The classes have been moved out of their default org.apache.commons package.
                  * naming-java.jar - Handler for the java: namespace.
                  * naming-resources.jar - The specialized JNDI naming context implementation used to represent the static resources of a web application. This is not related to the support of the J2EE ENC, and cannot be removed.
                  * servlet-api.jar - The Servlet 2.4 API.
                  * 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.

              Catalina 類裝載器:
                   該類裝載器用都裝載tomcat5.5本身所需要的類文件和資源。應(yīng)用層的類裝載器不能訪問到它。
                    所有$CATALINA_HOME/server/classes目錄下未壓縮的類文件,資源文件都會(huì)補(bǔ)該類裝載器加載。
                    所有$CATALINA_HOME/server/lib目錄下壓縮后Jar/zip文件都會(huì)補(bǔ)該類裝載器加載。
                   Tomcat5.5默認(rèn)該目錄的類文件有:
                  * catalina.jar - Implementation of the Catalina servlet container portion of Tomcat 5.
                  * catalina-ant.jar - Some Ant tasks which can be used to manage Tomcat using the manager web application.
                  * catalina-optional.jar - Some optional components of Catalina.
                  * commons-modeler.jar - A model MBeans implementation used by Tomcat to expose its internal objects through JMX.
                  * servlets-xxxxx.jar - The classes associated with each internal servlet that provides part of Tomcat's functionality. These are separated so that they can be completely removed if the corresponding service is not required, or they can be subject to specialized security manager permissions.
                  * tomcat-coyote.jar - Coyote API.
                  * tomcat-http.jar - Standalone Java HTTP/1.1 connector.
                  * tomcat-ajp.jar - Classes for the Java portion of the AJP web server connector, which allows Tomcat to run behind web servers such as Apache and iPlanet iAS and iWS.
                  * tomcat-util.jar - Utility classes required by some Tomcat connectors.     

              Shared 類裝載器:
                  該類裝載器可化被所有的應(yīng)用程序類裝載器共享(除了tomcat本身內(nèi)部類加載外)
                      所有$CATALINA_BASE/shared/classes目錄下未壓縮的類文件,資源文件都會(huì)補(bǔ)該類裝載器加載。
                    所有$CATALINA_BASE/shared/lib目錄下壓縮后Jar/zip文件都會(huì)補(bǔ)該類裝載器加載。
                  注: 如果有該類庫(kù)使用$CATALINA_BASE環(huán)境變量啟動(dòng)了多個(gè)實(shí)例,則該類裝載器類庫(kù)的引使用會(huì)$CATALINA_BASE變量而不是$CATALINA_HOME 


              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è)類裝載器的定義整理出來(lái)后,Tomcat5.5服務(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/common/classes
              * $CATALINA_HOME/common/endorsed/*.jar
              * $CATALINA_HOME/common/i18n/*.jar
              * $CATALINA_HOME/common/lib/*.jar
              * $CATALINA_BASE/shared/classes
              * $CATALINA_BASE/shared/lib/*.jar

          Good Luck!
          Yours Matthew!

          posted on 2008-09-27 19:28 x.matthew 閱讀(2121) 評(píng)論(1)  編輯  收藏 所屬分類: Application Server
          主站蜘蛛池模板: 全南县| 翁源县| 聊城市| 马山县| 崇州市| 巩留县| 澄迈县| 外汇| 阿拉善左旗| 普洱| 阳原县| 通河县| 金湖县| 渑池县| 莱州市| 宁都县| 梅河口市| 肥城市| 彰武县| 乌审旗| 乌兰察布市| 安陆市| 胶州市| 维西| 九龙城区| 自治县| 甘南县| 台北市| 吉水县| 思茅市| 青田县| 金沙县| 四子王旗| 盐源县| 万荣县| 苏州市| 岚皋县| 清苑县| 勃利县| 尚志市| 永和县|