SpringBoot怎麼打成war套件在tomcat或wildfly下運行
springboot預設的打包方式為jar包,jar包的有優點是不需要更改的配置,並且內嵌了tomcat,如果打成jar包直接可以丟到docker中運行測試。但考慮到前端程式碼只能打成war包,因此乾脆也將後端程式碼打成war包和前端的程式碼一起放在tomcat容器中的webapps中運行就好了。
SpringBoot打包形式
預設情況下,建立的SpringBoot專案是按照jar包形式來進行打包的。同時,內建了tomcat的容器。
那麼,此時如果想讓springboot打包成war包,部署到wildfly等容器,該如何處理?
以下將從創建專案開始逐一講解。
建立項目
建立專案沒有什麼難點,使用idea工具建立一個簡單的maven項目即可,如果你的專案已經是springboot項目,想要修改為war包形式,對照修改即可。
修改pom.xml配置
建立專案之後,修改pom.xml文件,新增parent標籤。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> </parent>
如果原來是springboot項目,則已經包含了,不用修改。
pom.xml中設定打包方式為war。
<packaging>war</packaging>
新增或修改dependency配置,如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
其中在spring-boot-starter- web中需要排除tomcat的依賴。同時,加入servlet-api的依賴。注意這裡新增的依賴為Servlet2.5。
在build中使用以下插件進行打包。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
啟動main方法
如果已經存在啟動的main方法,則讓main方法繼承SpringBootServletInitializer,並實作其方法即可。如果是新建立項目,則直接在頂級目錄建立SpringBootApp(啟動類別),然後啟動diam如下。
@SpringBootApplication public class SpringBootApp extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootApp.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootApp.class); } }
打包
透過maven指令執行package打包即可,在target目錄下即可產生war包。
至於tomcat和wildfly的部署,都可將war套件放置於對應的目錄下啟動服務即可。
異常情況
如果在啟動時報如類似如下異常(提示缺少web.xml):
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
注意檢查pom檔案打包插件和是否排除了tomcat的問題,核查上面的打包插件是否正確。
問題的原因是:springboot專案中引用了依賴套件spring-boot-starter-web。此套件中所引用的spring-boot-starter-tomcat包含了tomcat嵌入式servlet容器,其不同版本實作的是不同的servlet版本規格。
Servlet/JSP版本2.5/2.1支援Tomcat的版本為6.0.x,最低java版本為1.5。 Servlet/JSP版本3.0/2.2支援Tomcat的版本為7.0.x,最低java版本為1.6。
由於上面使用了Servlet2.5,當沒有web.xml檔案時會出現上面的例外。
解決方式一:當Servlet版本小於3時,使用建立/src/main/webapp/WEB-INF/web.xml檔案。
解決方式二:在pom.xml的build下新增maven-war-plugin外掛程式。並設定failOnMissingWebXml為false。
以上是SpringBoot怎麼打成war套件在tomcat或wildfly下運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

若要將 JAR 專案部署到 Tomcat,請遵循以下步驟:下載並解壓縮 Tomcat。配置 server.xml 文件,設定連接埠和專案部署路徑。將 JAR 檔案複製到指定的部署路徑中。啟動 Tomcat。使用提供的 URL 存取已部署的項目。

要讓 Tomcat 伺服器對外網訪問,需要:修改 Tomcat 設定文件,允許外部連接。新增防火牆規則,允許存取 Tomcat 伺服器連接埠。建立 DNS 記錄,將網域名稱指向 Tomcat 伺服器公有 IP。可選:使用反向代理提升安全性和效能。可選:設定 HTTPS 以提高安全性。

Tomcat 安裝目錄:預設路徑:Windows:C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9自訂路徑:安裝時可指定。尋找安裝目錄:使用 whereis 或 locate 指令。

要透過 Tomcat 部署多個項目,需要建立每個專案的 webapp 目錄,然後:自動部署:將 webapp 目錄放置在 Tomcat 的 webapps 目錄中。手動部署:在 Tomcat 的 manager 應用程式中手動部署專案。專案部署後,可以透過其部署名稱訪問,例如:http://localhost:8080/project1。

查看Tomcat並發連線數的方法:造訪Tomcat Manager頁面(http://localhost:8080/manager/html),輸入使用者名稱和密碼。在左側導覽列中點選Status->Sessions,即可在頁面頂部看到並發連線數。

Tomcat 網站根目錄位於 Tomcat 的 webapps 子目錄中,用於儲存 Web 應用程式檔案、靜態資源和 WEB-INF 目錄;它可以透過尋找 Tomcat 設定檔中的 docBase 屬性來找到。

Tomcat埠號碼可透過以下方法檢視:檢查server.xml檔案中的<Connector>元素的port屬性。造訪Tomcat管理介面(http://localhost:8080/manager/html)並查看"Status"標籤。在命令列中運行"catalina.sh version"並查看"Port:"行。

若要設定 Tomcat 使用域名,請執行下列步驟:建立伺服器.xml 備份。開啟 server.xml 並加入 Host 元素,將 example.com 替換為你的網域。為網域名稱建立 SSL 憑證(如果需要)。在 server.xml 中新增 SSL 連接器,變更連接埠、金鑰庫檔案和密碼。保存 server.xml。重新啟動 Tomcat。
