SpringBoot War包形式部署到外部Tomcat

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章