cuiyi's blog(崔毅 crazycy)

          記錄點(diǎn)滴 鑒往事之得失 以資于發(fā)展
          數(shù)據(jù)加載中……

          ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用

          ClassLoader 專(zhuān)題(一): ClassLoader 基礎(chǔ)

          ClassLoader 專(zhuān)題(二):從 Servlet 容器看 ClassLoader 機(jī)制的妙用
              ClassLoader專(zhuān)題(三):引文

          classloader有啥妙用(1)?
          這個(gè)問(wèn)題得從自定義的classloader身上說(shuō),那自定義classloader緣由是什么呢?
          告訴你:大多是因?yàn)榫幾g時(shí)無(wú)法預(yù)知運(yùn)行時(shí)需要哪些類(lèi),特別是app server;因此自定義classloader,運(yùn)行時(shí)指定路徑,來(lái)加載這個(gè)路徑下的class


          特殊說(shuō)明
          特殊說(shuō)明1:如果沒(méi)有特殊指定,用戶(hù)自定義的classloader都把system classloader作為它的父加載器
          特殊說(shuō)明2:jvm認(rèn)為不同的classloade載入相同名字的class是不同的,即使從同一個(gè)class文件載入


          classloader有啥妙用(2)?
          看到特殊說(shuō)明2,你或許就會(huì)感覺(jué)疑惑或者不爽;啥概念?
          以servlet、ejb等容器來(lái)剖析這個(gè)問(wèn)題:

          將接口或者基類(lèi)放入classpath                         <---------system classloader
          執(zhí)行時(shí),動(dòng)態(tài)載入實(shí)現(xiàn)或者繼承這些接口或者基類(lèi)的子類(lèi);<---------customized classloader
                   ||
                   ||
          用customized classloader載入類(lèi)時(shí),發(fā)現(xiàn)它有一個(gè)父類(lèi)class(extends);
          但是在載入它時(shí),jvm先加載父類(lèi)class; 這個(gè)父類(lèi)是system classloader能識(shí)別的; 根據(jù)“委托機(jī)制”它將由system classloader來(lái)加載;
          然后customized classloader(實(shí)際是system classloader來(lái)加載)再載入這個(gè)class,創(chuàng)建一個(gè)實(shí)例,轉(zhuǎn)型為父類(lèi);
          jvm就使用system classloader再次載入父類(lèi)class,然后將此實(shí)例轉(zhuǎn)型為這個(gè)父類(lèi)class;

          這個(gè)過(guò)程加載了兩個(gè)父類(lèi)class,都是由system classloader載入;即同一個(gè)classloader載入同一個(gè)文件,造型不會(huì)由異常

          web app server大概是這樣工作的;這樣載入了任何繼承了servlet的class并正確運(yùn)行它們,不管class是什么,都它們實(shí)例化為一個(gè)servlet class

          posted on 2006-11-24 22:20 crazycy 閱讀(3511) 評(píng)論(7)  編輯  收藏 所屬分類(lèi): JavaSE語(yǔ)言

          評(píng)論

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          專(zhuān)題二沒(méi)大看明白,
          再搜搜相關(guān)資料看一看去。
          2007-02-03 01:01 | xigo

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          想請(qǐng)教下前輩,對(duì)自定義classloader的實(shí)際應(yīng)用方面的看法。最近在做這個(gè)畢設(shè)。指點(diǎn)一二,不勝感激。
          2007-04-16 20:52 | 久城

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          @久城
          有個(gè)文章很棒,一起分享
          http://www.javaworld.com/javaworld/javaqa/2003-06/01-qa-0606-load.html?page=1
          2007-05-05 01:43 | crazycy

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          謝謝BZ,已經(jīng)收集...
          http://www.aygfsteel.com/realsmy/archive/2007/04/26/113672.html
          2007-05-05 08:10 | 久城

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          @久城
          網(wǎng)上現(xiàn)有的翻譯只是前邊部分,翻譯總體不錯(cuò),幾個(gè)細(xì)節(jié)比較粗糙,比如為什么JNDI需要引入ContextClassLoader,翻譯錯(cuò)過(guò)了幾個(gè)關(guān)鍵的詞,導(dǎo)致難以理解;見(jiàn)我在ClassLoader專(zhuān)題(三)中原文標(biāo)注部分
          2007-05-06 00:40 | crazycy

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          太感謝了!~學(xué)習(xí)!
          2007-05-06 10:05 | 久城

          # re: ClassLoader專(zhuān)題(二):從Servlet容器看ClassLoader機(jī)制的妙用  回復(fù)  更多評(píng)論   

          壓力容器人才網(wǎng)www.cpvjob.com 壓力容器人才求職、壓力容器企業(yè)招聘唯一專(zhuān)業(yè)性人才招聘網(wǎng)站,歡迎登陸,祝工作愉快,請(qǐng)轉(zhuǎn)發(fā)給您的好友
          2008-11-19 19:52 | 壓力容器人才網(wǎng)
          主站蜘蛛池模板: 松桃| 开封县| 苍溪县| 桃园县| 永和县| 灵丘县| 玉山县| 峨眉山市| 荣昌县| 莫力| 临颍县| 揭阳市| 灯塔市| 林周县| 互助| 霸州市| 榆树市| 太谷县| 武安市| 二连浩特市| 始兴县| 义马市| 邵武市| 常熟市| 巨鹿县| 二连浩特市| 麦盖提县| 安宁市| 阿城市| 玉龙| 蒙自县| 崇义县| 临朐县| 扎囊县| 射阳县| 醴陵市| 玛多县| 五原县| 黎平县| 图木舒克市| 樟树市|