<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    銀色幻想

    常用鏈接

    統計

    積分與排名

    學習交流

    最新評論

    tomcat加載順序

    1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。

    2.環境變量CLASSPATH中的jar和class文件。

    3.$CATALINA_HOME/common/classes下的class文件。

    4.$CATALINA_HOME/commons/endorsed下的jar文件。

    5.$CATALINA_HOME/commons/i18n下的jar文件。

    6.$CATALINA_HOME/common/lib?下的jar文件。
    (JDBC驅動之類的jar文件可以放在這里,這樣就可以避免在server.xml配置好數據源卻出現找不到JDBC?Driver的情況。)
    7.$CATALINA_HOME/server/classes下的class文件。

    8.$CATALINA_HOME/server/lib/下的jar文件。

    9.$CATALINA_BASE/shared/classes?下的class文件。

    10.$CATALINA_BASE/shared/lib下的jar文件。

    11.各自具體的webapp?/WEB-INF/classes下的class文件。

    12.各自具體的webapp?/WEB-INF/lib下的jar文件。

    class的搜尋順序如下:
    -------------
    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?
    --------------


    因此放在不同webapp里的class文件,會被classloader加載成不同的實例。
    例如假設下面兩個不同內容的class。分別放在不同的webapp的class目錄下。

    package?com.lizongbo;
    public?class?TestClass?{
    ??private?String?NAME="lizongbo";
    }

    package?com.lizongbo;
    public?class?TestClass?{
    ??private?String?NAME="li_zongbo";
    }

    在不同的webapp得到的com.lizongbo.NAME結果是不同的,且互不影響。

    但是注意,以下包名開頭的class例外:
    javax.*?
    org.xml.sax.*?
    org.w3c.dom.*?
    org.apache.xerces.*?
    org.apache.xalan.*?

    ps,注意.在各個jar中的\META-INF\MAINFEST.MF文件里Class-Path鍵值對,也會提供jar的加載優先順序。
    例如某jar的MAINFEST.MF內容如下:
    Manifest-Version:?1.0
    Created-By:?lizongbo
    Class-Path:?commons-beanutils.jar
    Class-Path:?commons-collections.jar
    Class-Path:?commons-dbcp.jar
    Class-Path:?commons-digester.jar
    Class-Path:?commons-logging.jar
    Class-Path:?commons-pool.jar
    Class-Path:?commons-services.jar
    Class-Path:?commons-validator.jar
    Class-Path:?jakarta-oro.jar
    Main-Class:?com.lizongbo.MyTestClass


    那么在加載這個jar的時候,會先在此jar所在目錄下依次先加載commons-beanutils.jar,commons-collections.jar。。。等jar文件。

    在不同的地方放置jar和class可能會產生意想不到的后果,,尤其是不同版本的jar文件,因此在實際應用部署web應用時候要特別留心.


    例如?使用javamail常見的一個出錯信息:
    javax.mail.NoSuchProviderException:?No?provider?for?smtp
    其真實原因就很可能如下:
    在不同的加載jar的目錄下放置了不同版本的mail.jar,比如一個是javamail1.3.1的mail.jar
    在D:\jakarta-tomcat-5.5.8\common\lib下,而另外一個是javamail1.3.2的mail.jar在
    D:\jakarta-tomcat-5.5.8\webapps\lizongbo\WEB-INF/lib下,
    那么lizongbo這個webapp中使用到javamail進行郵件發送的時候,便會出現No?provider?for?smtp的錯誤。

    posted on 2006-03-25 16:42 銀色幻想 閱讀(371) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 4虎永免费最新永久免费地址| 亚洲精品国产日韩无码AV永久免费网| 免费人成毛片动漫在线播放| 亚洲成A∨人片天堂网无码| 久久精品国产亚洲AV天海翼| 天天看片天天爽_免费播放| 久久亚洲国产成人影院| 成年女人喷潮毛片免费播放| 一本色道久久88—综合亚洲精品| 成人免费AA片在线观看| 亚洲乱码日产精品一二三| 免费一级毛片女人图片| 国产免费牲交视频免费播放 | 亚洲国产综合无码一区二区二三区| 亚洲av日韩精品久久久久久a| 又粗又大又长又爽免费视频| 免费播放国产性色生活片| 国产亚洲AV夜间福利香蕉149| 国产免费无码一区二区| 67pao强力打造67194在线午夜亚洲| 88xx成人永久免费观看| 国产精品高清视亚洲一区二区 | 亚洲av最新在线观看网址| 免费观看国产精品| 两个人看的www视频免费完整版| 国产亚洲无线码一区二区 | 日本免费一区二区三区| 亚洲一级免费视频| 免费播放特黄特色毛片| 免费黄网站在线看| 亚洲综合av一区二区三区不卡 | 99国产精品视频免费观看| 精品国产成人亚洲午夜福利| gogo全球高清大胆亚洲| 男人的天堂网免费网站| 亚洲精品成a人在线观看夫| 亚洲精品色午夜无码专区日韩| 国产卡二卡三卡四卡免费网址 | 无码日韩精品一区二区三区免费| 亚洲欧洲日本在线观看| 亚洲女同成人AⅤ人片在线观看|