Xiaobo Sun

          Eclipse-Unix http://umlfact.berlios.de/~s_xsun/

          Java Class Loader

           Class loader priority is bootstrap >extension >application (or system)

          1. bootstrap: 主要是負(fù)責(zé)裝載jre/lib下的jar文件,當(dāng)然,你也可以通過-Xbootclasspath參數(shù)定義。該ClassLoader不能被Java代碼實(shí)例化,因?yàn)樗荍VM本身的一部分
          2. extension: 該ClassLoader是Bootstrap classLoader的子class loader。它主要負(fù)責(zé)加載jre/lib/ext/下的所有jar文件。只要jar包放置這個(gè)位置,就會被虛擬機(jī)加載。一個(gè)常見的、類似的問題是,你 將mysql的低版本驅(qū)動不小心放置在這兒,但你的Web應(yīng)用程序的lib下有一個(gè)新的jdbc驅(qū)動,但怎么都報(bào)錯(cuò),譬如不支持JDBC2.0的 DataSource,這時(shí)你就要當(dāng)心你的新jdbc可能并沒有被加載。這就是ClassLoader的delegate現(xiàn)象。常見的有l(wèi)og4j、 common-log、dbcp會出現(xiàn)問題,因?yàn)樗鼈兒苋菀妆蝗巳竭@個(gè)ext目錄,或是Tomcat下的common/lib目錄。
          3. application loader: 也稱為System ClassLoaer。它負(fù)責(zé)加載CLASSPATH環(huán)境變量下的classes。缺省情況下,它是用戶創(chuàng)建的任何ClassLoader的父 ClassLoader,我們創(chuàng)建的standalone應(yīng)用的main class缺省情況下也是由它加載(通過Thread.currentThread().getContextClassLoader()查看)。

          我們實(shí)際開發(fā)中,用ClassLoader更多時(shí)候是用其加載classpath下的資源,特別是配置文件,如ClassLoader.getResource(),比FileInputStream直接。

          ClassLoader是一種分級(hierarchy)的代理(delegation)模型。
          Delegation:其實(shí)是Parent Delegation,當(dāng)需要加載一個(gè)class時(shí),當(dāng)前線程的ClassLoader首先會將請求代理到其父classLoader,遞歸向上,如果該 class已經(jīng)被父classLoader加載,那么直接拿來用,譬如典型的ArrayList,它最終由Bootstrap ClassLoader加載。并且,每個(gè)ClassLoader只有一個(gè)父ClassLoader。
          Class查找的位置和順序依次是:Cache、parent、self。
          Hierarchy: 上面的delegation已經(jīng)暗示了一種分級結(jié)構(gòu),同時(shí)它也說明:一個(gè)ClassLoader只能看到被它自己加載的 classes,或是看到其父(parent) ClassLoader或祖先(ancestor) ClassLoader加載的Classes。
          在一個(gè)單虛擬機(jī)環(huán)境下,標(biāo)識一個(gè)類有兩個(gè)因素:class的全路徑名、該類的ClassLoader。

          ===================Tomcat Class Loading==========================================


          posted on 2008-12-21 12:23 Xiaobo Sun 閱讀(244) 評論(0)  編輯  收藏 所屬分類: Java

          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 论坛| 平阴县| 涟源市| 绥阳县| 上饶市| 哈密市| 靖安县| 德格县| 彝良县| 甘肃省| 肃宁县| 麻阳| 嘉鱼县| 汨罗市| 万州区| 金塔县| 山丹县| 乐至县| 稻城县| 巫溪县| 江山市| 吴桥县| 三亚市| 瑞金市| 新乐市| 竹山县| 隆尧县| 唐河县| 邢台县| 宁陵县| 乐至县| 镇沅| 瑞安市| 庆阳市| 卓资县| 金寨县| 平顶山市| 澄迈县| 荣昌县| 东安县| 称多县|