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

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

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

    空間站

    北極心空

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    用 GlassFish v2 替換 Tomcat 5.x

    1. 背景

     

    用了很多年的Tomcat, 無(wú)論開(kāi)發(fā)環(huán)境還是生產(chǎn)環(huán)境, 應(yīng)該說(shuō), 大家對(duì)它還是基本滿意的.
    不過(guò), 也不是一點(diǎn)問(wèn)題沒(méi)有. 從開(kāi)發(fā)人員的角度來(lái)說(shuō), Tomcat主要的缺點(diǎn)就是較弱的熱部署
    (hot deploy)能力. 修改一個(gè)Java類, 保存后, Tomcat會(huì)重新加載這個(gè)類, 但不久就要重
    新啟動(dòng)Tomcat才能繼續(xù)開(kāi)發(fā). 在企業(yè)關(guān)鍵應(yīng)用的場(chǎng)景下, 若發(fā)生急迫的程序缺陷更正, 讓眾多的用戶停止手頭的工作, 等待服務(wù)器重新啟動(dòng), 顯然十分不便.

     

    類似RubyOnRails的技術(shù)框架, 其方便之處就是腳本語(yǔ)言不要編譯, 保存后直接可以使用.
    Java社區(qū)顯然看到了這個(gè)問(wèn)題, GlassFish v2 的熱部署能力就是其主要的一個(gè)受大家歡迎的
    特性. 這也是我們要用 GlassFish v2 替換 Tomcat 5.x 的主要理由.

     

    2. 使用環(huán)境

     

    本文假設(shè)你使用下面所述的開(kāi)發(fā)環(huán)境.
    (1) JDK 1.5 或 1.6
    (2) Eclipse IDE for Java EE Developers (3.3.1.1 M20071023-1652)
    (3) 使用 com.sysdeo.eclipse.tomcat_3.2.1 插件

     

    如果你沒(méi)有使用 Eclipse 3.3.1.1 Java EE 版本, 而是正在使用其他版本, 也不影響本文所述的所有操作和效果, 只是不能借助Eclipse 啟動(dòng)和停止 GlassFish v2, 只能自己通過(guò)命令行進(jìn)行操作.

     

    有關(guān)用 Eclipse 3.3.1.1 Java EE 版本操作 GlassFish v2 的詳細(xì)說(shuō)明, 請(qǐng)參見(jiàn) Eclipse 3.3 and GlassFish Java EE 5 integration.

     

    3. 下載并安裝 GlassFish v2

     

    這方面的資料已經(jīng)很容易從網(wǎng)上找到, 比較好的文章如下:
    (1) 在Glassfish上部署web應(yīng)用
    (2) Glassfish初試
    (3) 從tomcat到glashfish(glassfish的安裝啟動(dòng)筆記)

     

    4. 創(chuàng)建 Tomcat 項(xiàng)目

     

    相信你一定也知道如何創(chuàng)建 Tomcat 項(xiàng)目. 本文假設(shè)你創(chuàng)建的 Tomcat 項(xiàng)目:
    (1) 位于 D:/Sample 目錄.
    (2) Context name 為 Sample.

     

    其他采用默認(rèn)設(shè)置.

     

    5. 為測(cè)試 GlassFish v2 的熱部署能力, 創(chuàng)建首頁(yè)JSP和Servlet Java類.

     

    第1步: 在根目錄中創(chuàng)建 index.jsp 文件

     

    第2步: 在 WEB-INF\src 中, 創(chuàng)建一個(gè)簡(jiǎn)單的 servlet 類 SampleServlet.java,

     

    第3步: 配置web.xml文件.

     

    完整的Sample項(xiàng)目, 請(qǐng)參見(jiàn)附件.

     

    6. 什么是 GlassFish v2 的目錄部署?

     

    用Tomcat開(kāi)發(fā)時(shí), JSP/HTML/JS/CSS 等文件, 都是修改后保存, 刷新瀏覽器就可以使用.
    為了使 GlassFish v2 達(dá)到同樣的效果, 需要使用其目錄部署(directory deployment)特性.

    這個(gè)特性不太容易找, 因?yàn)槭褂孟驡lassFish這樣的全功能應(yīng)用服務(wù)器的開(kāi)發(fā)人員,習(xí)慣了
    "編輯、編譯、部署、運(yùn)行"這樣的步驟. 一開(kāi)始, 我按照
    Eclipse 3.3 and GlassFish Java EE 5 integration.
    一文的指引, 發(fā)現(xiàn)修改JSP文件后,仍然要經(jīng)歷上面的部署過(guò)程. 雖然Eclipse會(huì)通過(guò)自動(dòng)檢測(cè)
    文件版本的變化, 觸發(fā)Ant任務(wù)實(shí)現(xiàn)部署, 但仍然很浪費(fèi)時(shí)間. 我們需要找到跳過(guò)"部署"的方法.
    在GlassFish官方論壇上發(fā)了幾個(gè)帖子, 答復(fù)者的回帖沒(méi)有起到什么作用, 但通過(guò)搜索論壇基本
    知道這個(gè)問(wèn)題已經(jīng)得到了解決.

     

    下面的文章引導(dǎo)我朝著正確的方向前進(jìn)了一大步(非常感謝該文作者):
    GlassFish Auto Deployment and Hot Deployment

     

    關(guān)于目錄部署的詳細(xì)說(shuō)明,參見(jiàn):
    Sun Java System Application Server Platform Edition 9.0 Application Deployment Guide
    Chapter 1 中 Deployment for Development 一節(jié)

     

    7. GlassFish v2 的目錄部署實(shí)戰(zhàn)

     

    第1步: 啟動(dòng) GlassFish v2.

     

    第2步: 部署 Sample 項(xiàng)目到 GlassFish v2, DOS窗口下執(zhí)行命令:

    Java代碼 復(fù)制代碼
    1. GLASS_FISH_HOME/bin/asadmin deploydir D:/Sample  
     

    其中 GLASS_FISH_HOME 是 GlassFish 的安裝目錄, 命令執(zhí)行完畢后,可以看到成功部署信息.

     

    第3步: 打開(kāi)瀏覽器, 輸入http://localhost:8080/Sample/index.jsp, 看到頁(yè)面內(nèi)容.

     

    第4步: 打開(kāi)瀏覽器, 輸入 http://localhost:8080/Sample/servlet/Sample, 看到頁(yè)面內(nèi)容.

     

    8. 體驗(yàn) GlassFish v2 的熱部署特性

     

    第1步: 修改 index.jsp 文件內(nèi)容, 保存后, 刷新瀏覽器, 你就能馬上看到新的內(nèi)容.
    ( http://localhost:8080/Sample/index.jsp)

     

    第2步: 修改 SampleServlet.java, 保存后, 等待片刻, Eclipse 已經(jīng)自動(dòng)編譯這個(gè)類, 但 GlassFish v2 控制臺(tái)中沒(méi)有任何提示, 刷新瀏覽器, 看不到新的內(nèi)容.
    ( http://localhost:8080/Sample/servlet/Sample)

     

    第3步: 現(xiàn)在, 在 Sample 項(xiàng)目根目錄中創(chuàng)建文件名為".reload"的文件(內(nèi)容為空).

     

    第4步: 觀察GlassFish v2 控制臺(tái), 可以看到重新加載信息,刷新瀏覽器


    (http://localhost:8080/Sample/servlet/Sample)

    到了新的內(nèi)容.

     

    第5步: 再次修改 SampleServlet.java 的內(nèi)容, 保存后, 遇到和第2步同樣的問(wèn)題.

     

    第6步: 再次打開(kāi) .reload 文件, 輸入任意內(nèi)容, 然后保存.

     

    第7步: 再次出現(xiàn)與第4步同樣的效果.

     

    總結(jié)上述操作, GlassFish v2 對(duì)于非Java類的加載, 達(dá)到了和Tomcat同樣的效果, 但Java類的
    加載, 需要通過(guò) .reload 文件的時(shí)間戳來(lái)控制. 這種做法對(duì)開(kāi)發(fā)有好處, 在調(diào)試改錯(cuò)時(shí), 可以修改
    多個(gè) Java 類文件, 然后讓 GlassFish v2 一次加載全部修過(guò)的類.

     

    9. 自動(dòng)化 .reload 文件時(shí)間戳刷新

     

    上一節(jié)中, 手工打開(kāi) .reload 文件, 通過(guò)修改其內(nèi)容刷新其時(shí)間戳, 這種做法太麻煩.

    在 unix/linux 平臺(tái)下, 通過(guò)命令 touch 刷新 .reload 文件的時(shí)間戳. 在 Window 平臺(tái), 也有
    人實(shí)現(xiàn)了 touch. 我在 CodeProject 網(wǎng)站找到一個(gè) touch.exe:
    Touch for Windows - The Code Project - Free Tools,很好用, 并且可以集成到 Eclipse 的工具條按鈕中來(lái)執(zhí)行 touch 命令(touch.exe 已經(jīng)包括在附件中).

     

    第1步: 拷貝下載的 touch.exe 到 Sample 項(xiàng)目根目錄.

     

    第2步: 在 Eclipse 下, 選擇 Run > External Tools > Open External Tools Dialog.

     

    第3步: 選中左側(cè) Program 節(jié)點(diǎn), 右擊, 選擇New菜單項(xiàng).

     

    第4步: 在右側(cè)出現(xiàn)的對(duì)話框中, 填入下面的內(nèi)容


    Name: SampleTouch
    Main[頁(yè)面]
    Localtion: ${workspace_loc:/Sample/touch.exe}
    Working Directory: ${workspace_loc:/Sample}
    Arguments: .reload
    Common[頁(yè)面]
    Display in favorites menu: 選中External Tools

    保存后, 你可以在Eclipse的Run工具條按鈕中看到新創(chuàng)建的項(xiàng).

     

    10. 結(jié)語(yǔ)

     

    用 GlassFish v2 可以完全替換 Tomcat 5.x, 在開(kāi)發(fā)中它保留了 Tomcat 好的特性的
    同時(shí),給我們帶來(lái)了強(qiáng)壯的熱部署功能, 顯著地提高了開(kāi)發(fā)效率.

     

    感謝GlassFish v2, 感謝為之付出心血的Java社區(qū)成員, 是他們讓我們感受到了技術(shù)
    進(jìn)步的喜悅.

    • Sample.rar (23.6 KB)
    • 描述: 測(cè)試用Tomcat項(xiàng)目
    • 下載次數(shù): 353
    posted on 2008-06-26 09:50 蘆葦 閱讀(519) 評(píng)論(0)  編輯  收藏 所屬分類: IDEJAVA
    主站蜘蛛池模板: 67194在线午夜亚洲| 亚洲成色WWW久久网站| 亚洲最大的黄色网| 99在线免费观看视频| 亚洲男人第一av网站| 国产成人AV片无码免费| 亚洲va中文字幕无码久久不卡 | 免费国产a国产片高清| 激情综合亚洲色婷婷五月APP| ww在线观视频免费观看| 亚洲国产高清在线精品一区| 无码国产精品一区二区免费模式| 久久亚洲国产精品| 精品国产污污免费网站aⅴ| 亚洲国产精品综合一区在线| 国产精彩免费视频| 亚洲第一区二区快射影院| 成人免费无码大片a毛片软件| 亚洲国产综合AV在线观看| 国产一区二区三区在线免费观看 | 亚洲福利在线视频| 巨波霸乳在线永久免费视频 | 无码乱肉视频免费大全合集| 国产午夜亚洲精品| 国产一级理论免费版| 国产精品成人69XXX免费视频| 精品亚洲综合在线第一区| 1000部啪啪未满十八勿入免费| 亚洲AV无码国产精品色| 国产成人免费a在线资源| 亚欧国产一级在线免费| 亚洲日本中文字幕区| 在线精品免费视频| 国产成人高清精品免费观看| 亚洲尹人九九大色香蕉网站 | 亚洲色图国产精品| 最近中文字幕免费mv视频7| 黄色网址大全免费| 亚洲专区在线视频| 日韩中文字幕在线免费观看| 91视频免费网站|