歡迎您光臨本站 註冊首頁

用GlassFish v2替換Tomcat 5.x

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0

1. 背景

用了很多年的Tomcat, 無論開發環境還是生產環境, 應該說, 大家對它還是基本滿意的.不過, 也不是一點問題沒有. 從開發人員的角度來說, Tomcat主要的缺點就是較弱的熱部署(hot deploy)能力. 修改一個Java類, 保存后, Tomcat會重新載入這個類, 但不久就要重新啟動Tomcat才能繼續開發. 在企業關鍵應用的場景下, 若發生急迫的程序缺陷更正, 讓眾多的用戶停止手頭的工作, 等待伺服器重新啟動, 顯然十分不便.

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

2. 使用環境

本文假設你使用下面所述的開發環境.
(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 插件

如果你沒有使用 Eclipse 3.3.1.1 Java EE 版本, 而是正在使用其他版本, 也不影響本文所述的所有操作和效果, 只是不能藉助Eclipse 啟動和停止 GlassFish v2, 只能自己通過命令行進行操作.

有關用 Eclipse 3.3.1.1 Java EE 版本操作 GlassFish v2 的詳細說明, 請參見 Eclipse 3.3 and GlassFish Java EE 5 integration.

3. 下載並安裝 GlassFish v2

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

4. 創建 Tomcat 項目

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

其他採用默認設置.

5. 為測試 GlassFish v2 的熱部署能力, 創建首頁JSP和Servlet Java類.

第1步: 在根目錄中創建 index.jsp 文件

第2步: 在 WEB-INFsrc 中, 創建一個簡單的 servlet 類 SampleServlet.java,

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

完整的Sample項目, 請參見附件.

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

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

這個特性不太容易找, 因為使用象GlassFish這樣的全功能應用伺服器的開發人員,習慣了"編輯、編譯、部署、運行"這樣的步驟. 一開始, 我按照 Eclipse 3.3 and GlassFish Java EE 5 integration.一文的指引, 發現修改JSP文件后,仍然要經歷上面的部署過程. 雖然Eclipse會通過自動檢測文件版本的變化, 觸發Ant任務實現部署, 但仍然很浪費時間. 我們需要找到跳過"部署"的方法. 在GlassFish官方論壇上發了幾個帖子, 答覆者的回帖沒有起到什麼作用, 但通過搜索論壇基本知道這個問題已經得到了解決.

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

關於目錄部署的詳細說明,參見:
Sun Java System Application Server Platform Edition 9.0 Application Deployment Guide
Chapter 1 中 Deployment for Development 一節

7. GlassFish v2 的目錄部署實戰

第1步: 啟動 GlassFish v2.

第2步: 部署 Sample 項目到 GlassFish v2, DOS窗口下執行命令: