Ubuntu系統下JSP實現熱部署的常見方法
Tomcat作為常用的Java Servlet容器,原生支持JSP熱部署,需通過配置其核心文件開啟相關功能。
sudo apt update && sudo apt install openjdk-11-jdk;再通過sudo apt install tomcat9安裝Tomcat 9(或其他版本),安裝完成后啟動服務sudo systemctl start tomcat9。server.xml文件(路徑為/etc/tomcat9/server.xml),找到<Host>標簽(通常為name="localhost"的節點),添加autoDeploy="true"和deployOnStartup="true"屬性,使Tomcat自動檢測并部署webapps目錄下的應用。例如:<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true">
context.xml文件(路徑為/etc/tomcat9/context.xml),在<Context>標簽內添加reloadable="true"屬性,Tomcat會監控WEB-INF/classes和WEB-INF/lib目錄的變化,自動重新加載應用。例如:<Context reloadable="true">
sudo systemctl restart tomcat9重啟服務,使配置生效。此后,修改JSP文件并保存,Tomcat會自動重新編譯并加載,無需手動重啟。JRebel是一款商業工具,支持Java代碼、JSP、配置文件的實時熱部署,無需重啟Tomcat或應用服務器,大幅提升開發效率。
File -> Settings -> Plugins搜索“JRebel”,點擊“Install”安裝插件,安裝完成后重啟IDEA。File -> Project Structure -> Facets,確保JRebel已啟用;再進入Run/Debug Configurations,選擇Tomcat Server配置,在“Before launch”中添加“Make”和“JRebel”任務,使JRebel在啟動前監控項目變化。若項目基于Spring Boot框架,可使用其內置的DevTools工具實現快速熱部署,適用于開發環境。
pom.xml中添加以下依賴:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
Gradle項目則在build.gradle中添加:developmentOnly("org.springframework.boot:spring-boot-devtools")
File -> Settings -> Build, Execution, Deployment -> Compiler,勾選“Build project automatically”;再進入Settings -> Advanced Settings,勾選“Allow auto-make to start even if developed application is currently running”。Ctrl + F9(Windows/Linux)或Cmd + F9(Mac)觸發重新編譯,Spring Boot DevTools會自動重啟應用(僅重啟修改的部分),實現熱部署效果。reloadable="false"、JRebel禁用)。