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

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

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

    做法1:以Eclipse為啟動(dòng)點(diǎn),將appserver做為一個(gè)應(yīng)用啟動(dòng)。

    1.jpg
    做法:
    在Launcher 當(dāng)中啟動(dòng)Eclipse Platform。此處的ClassLoader 為系統(tǒng)的loader。
    Eclipse Platform 會(huì)查找到Core Application,并且將其啟動(dòng)。
    在Core Application 當(dāng)中,ClassLoader 為 Eclipse 的 ClassLoader。
    在Core Application 當(dāng)中,我們啟動(dòng)Jetty,并處于等待狀態(tài)。
    當(dāng)Servlet/JSP被調(diào)用時(shí),Jetty 將Servlet/JSP初始化,并執(zhí)行相應(yīng)動(dòng)作。
    Servlet 的 ClassLoader 是 Context ClassLoader,符合Servlet 規(guī)范的。

    曾經(jīng)碰到的問題:
    Core Application采用的是Eclipse ClassLoader,缺省情況下,該ClassLoader 的 parent 為 null。這樣,在Servlet ClassLoader 當(dāng)中,能夠接觸到System ClassLoader,但是Core Application 不能訪問,它們相互間不可見。
    解決辦法:EclipseStarter 有個(gè)配置項(xiàng)叫做parent.Classloader,將其設(shè)置為app,即可解決該問題。
    Servlet ClassLoader按照Servlet 2.3的規(guī)范,首先由Context ClassLoader去查找,如果找不到,再交由parent 去load。而當(dāng)時(shí)我在webapp/WEB-INF/lib目錄下放了一個(gè)runtime.jar文件。這樣,runtime.jar當(dāng)中的類都被Context ClassLoader給裝載進(jìn)來(lái)了,而對(duì)于EclipseStarter當(dāng)中裝載的runtime.jar中的類互相不可見,從而也出現(xiàn)問題。
    解決辦法:把lib目錄下的runtime.jar刪除就好了。

    由于所有的與eclipse有關(guān)的內(nèi)容,只能由Core Application 的ClassLoader才能裝載,因而相互間是可見的。從而達(dá)到了利用eclipse核心的目的。
    做法2:以app server 為啟動(dòng)點(diǎn),以eclipse 核心為web app的核心:
    2.jpg


    和做法1一樣,重點(diǎn)是將Core Application的ClassLoader設(shè)置為System的loader,這樣,在其他的地方(例如Servlet當(dāng)中)也同樣可見了。

    很重要:runtime.jar和osgi.jar一定要放在jetty的啟動(dòng)路徑當(dāng)中。這樣才會(huì)用System的loader 首先找到這兩個(gè)jar文件,從而保證大家都在這個(gè)基礎(chǔ)上來(lái)互相看到。

    做法3:以Eclipse為啟動(dòng)點(diǎn),將appserver做為一個(gè)應(yīng)用啟動(dòng),appserver以dispatcher身份出現(xiàn)。

    這個(gè)做法和做法1一致。區(qū)別在于,appserver 本身不做任何事情,只是做為一個(gè) dispatcher 出現(xiàn)。它提供一個(gè) extension point,其他插件擴(kuò)展該 extension,相當(dāng)于注冊(cè) servlet,以及mapping。當(dāng)有http request 時(shí),dispatcher根據(jù) servlet 的注冊(cè)和mapping,自動(dòng)的分發(fā)給對(duì)應(yīng)的servlet。此時(shí),各個(gè)servlet的 class loader 還是 eclipse classloader,而 servlet 的 context classloader 在這種模式當(dāng)中只是曇花一現(xiàn),做了一個(gè) dispatcher 之后,就將工作移交給了定義serlvet 的插件的那個(gè) eclipse classloader。

    這樣,servlet 是可擴(kuò)展的,再也不依賴于 web.xml了。

    主站: http://blogsite.3322.org/jspwiki/
    posted on 2005-11-28 09:56 SimonLei 閱讀(1977) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    統(tǒng)計(jì)

    主站蜘蛛池模板: 四虎影视精品永久免费| 成年女人毛片免费播放人 | a级毛片高清免费视频就| 免费h成人黄漫画嘿咻破解版| 亚洲精品456人成在线| 成人免费无码大片A毛片抽搐色欲| 亚洲熟妇色自偷自拍另类| 91免费在线播放| 免费国产高清毛不卡片基地 | 国产亚洲精品成人AA片新蒲金| 黄色毛片免费在线观看| 亚洲AV无码专区日韩| 九九免费观看全部免费视频| 亚洲男人av香蕉爽爽爽爽| 一级做受视频免费是看美女| 国产AⅤ无码专区亚洲AV| 亚洲精品免费在线观看| 亚洲人和日本人jizz| 成年女人免费视频播放77777 | 另类小说亚洲色图| 污视频在线观看免费| 久久久久亚洲AV无码观看| 蜜桃视频在线观看免费网址入口| 亚洲一区二区三区成人网站| 免费jjzz在线播放国产| 中文字幕在线成人免费看| 亚洲一区二区三区日本久久九| 色费女人18女人毛片免费视频| 亚洲区日韩区无码区| 一级毛片免费毛片一级毛片免费| 亚洲国产成人无码av在线播放| 成人免费看黄20分钟| 一级毛片大全免费播放下载| 亚洲精品免费视频| 九九久久精品国产免费看小说| 精品亚洲一区二区| A级毛片内射免费视频| 两个人看www免费视频| 波多野结衣亚洲一级| 夜夜春亚洲嫩草影院| 蜜桃视频在线观看免费网址入口|