SpringBoot War包形式部署到外部Tomcat
阿新 • • 發佈:2018-11-09
1.SpringBoot 專案打包時能打成 .jar 與 .war包檔案,打成 .jar 的最多,使用 java -jar xx.jar 就可以啟動,而 .war 可以部署到tomcat的 webapps 中,隨tomcat的啟動而啟動。
2.打成什麼檔案進行部署與專案業務有關,就像提供 rest 服務的專案需要打包成 jar檔案,用命令執行很方便。。。而有大量css、js、html,且需要經常改動的專案,打成 war 包去執行比較方便,因為改動靜態資源可以直接覆蓋,很快看到改動後的效果,這是 jar 包不能比的(舉個‘慄’子:專案打成 jar 包執行,一段時間後,前端要對其中某幾個頁面樣式進行改動,使其更美觀,那麼改動幾個css、html後,需要重新打成一個新的 jar 包,上傳伺服器並執行,這種改動頻繁時很不友好,檔案大時上傳伺服器很耗時,那麼 war包就能免去這種煩惱,只要覆蓋幾個css與html即可)
3. war 包的本質是 IDE 工具把專案檔案已某種結構進行編譯與排列java類會編譯成class的檔案,html會放到目錄中), 把 war 包檔案解壓後,裡面的檔案如下
- springboot 專案的war解壓後,裡面有3個資料夾,META-INF中有個檔案記錄了專案檔案的引用、啟動類、編譯jdk版本等資訊,java、html等專案檔案放入WEB-INF中
- WEB-INF目錄如下,lib是專案引用的架包的目錄,classes是java類編譯成class檔案和靜態資源的地方
- classes目錄如下,com中按專案架包路徑存放,templates中存放html,application.properties是配置檔案,如果有css與js會建立一個static目錄,裡面包含css、js資料夾,分別放css與js檔案,供templates目錄中的html檔案引用
4.SpringBoot War專案
在pom.xml中,maven配置如下
<packaging>war</packaging> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat外掛 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
修改啟動Application檔案繼承SpringBootServletInitializer,實現configure方法
@SpringBootApplication
public class WarApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WarApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WarApplication.class);
}
}
建立一個Controller,與html,專案釋出後提供訪問
然後通過 maven 打包,執行mvn命令或使用 IDE 提供的操作,如果是 IDEA 工具,可以通過 Maven Projects - Lifecycle - 雙擊package,則可在專案中生成一個 target 目錄,裡面有 war 檔案,並解壓
5.使用外部Tomcat執行該 war 檔案,有兩種方式,1把 war 檔案直接丟到 tomcat的webapps目錄,啟動tomcat,2使用tomcat - conf - server.xml配置,使用target目錄中war包解壓的資料夾為專案地址進行部署
<Service name="testWar">
<Connector port="8088" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="true" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"/>
<Engine name="hnswzy" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host name="localhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" reloadable="true" docBase="D:\project\springboot\war\target\war-0.0.1">
</Context>
</Host>
</Engine>
</Service>
啟動tomcat,訪問 http://localhost:8088/
可以隨意改動專案中的css、js、html等檔案後,重新整理頁面可看到最新效果,而 jar檔案改動後需要重新打包,上傳伺服器,並重新發布,比較繁瑣
原始碼下載 https://download.csdn.net/download/zhuyu19911016520/10693497