首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

以 GlassFish v2 取代 Tomcat 5.x:目錄部署實現真正熱部署

     編輯:Java 相關知識

動機:Tomcat 熱部署的痛點

Tomcat 修改 Java 類別後需重啟容器才能生效,嚴重拖慢開發迭代速度。GlassFish v2(現 Payara / Eclipse GlassFish 前身)引入目錄部署,支援 JSP/HTML/資源檔即時生效,Java 類別只需觸發 .reload 檔案時間戳即可熱重載,無需重啟 JVM。

環境準備

  • JDK 1.5/1.6
  • Eclipse IDE for Java EE (含 Sysdeo Tomcat Launcher 外掛)
  • GlassFish v2 安裝包(glassfish-installer-v2ur2-b04-linux.jar 等)

核心步驟:目錄部署

  1. 啟動 GlassFish:asadmin start-domain domain1
  2. 以目錄部署專案(而非 WAR):
$GLASSFISH_HOME/bin/asadmin deploydir /path/to/your/project/root
# 範例:deploydir D:/Sample

部署成功後,直接訪問 https://localhost:8080/Sample/。

熱部署驗證

修改類型行為生效方式
JSP / HTML / CSS / JS儲存後瀏覽器重整即見新內容自動偵測檔案變更
Java 類別 (Servlet, Bean, ...)Eclipse 自動編譯產生 .class,但 GlassFish 不會立即載入建立/修改專案根目錄下的 .reload 檔案(內容可為空)
# 觸發熱重載(Linux/Mac)
touch .reload

# Windows 可使用 touch.exe 或寫入任意字元後儲存
echo. > .reload

控制台將顯示 Module [Sample] reloaded,Servlet 新邏輯即刻生效。

自動化 .reload 觸發

手動觸發繁瑣,可整合到 Eclipse External Tools:

  1. 將 touch.exe 放入專案根目錄。
  2. Eclipse → Run → External Tools → External Tools Configurations → New Program:
  • Name: Touch Reload
  • Location: ${workspace_loc:/Sample/touch.exe}
  • Working Directory: ${workspace_loc:/Sample}
  • Arguments: .reload

工具列即出現按鈕,點一下即完成熱重載。

遷移建議

  • 資料源配置:domain.xml 的 <jdbc-resource> 對應 Tomcat context.xml 的 <Resource>。
  • JNDI 命名:GlassFish 預設 java:comp/env/jdbc/... 相容 Tomcat。
  • Session 複製:叢集環境需啟用 <session-manager> 的 persistence-type="ha"。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved