springboot war包部署過程詳解
正文
應(yīng)用在共有云上的時候是打成fatjar, 通過內(nèi)嵌tomcat啟動的. 在私有云上需要部署在一個進(jìn)程中, 通過打成war包托管給tomcat啟動.
1. 代碼
首先, Application啟動類需要繼承SpringBootServletInitializer并重寫configure方法, sources的入?yún)锳pplication.class.
2. pom
<packaging>${project.packaging}</packaging> <profiles> <profile> <id>jar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <project.packaging>jar</project.packaging> </properties> </profile> <profile> <id>war</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.0</version> </plugin> </plugins> </build> <properties> <project.packaging>war</project.packaging> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> </profile> </profiles>
在pom文件中通過profile控制打包行為, -Pwar時打成war包.
3. tomcat
tomcat10由于servlet被捐獻(xiàn)后包名改成了jakarta, 需要升版本和修改依賴, 改動有點大, 因此選擇tomcat9, 或者tomcat8.
4. context
注意war包名字修改為了ROOT, 默認(rèn)情況下, 如果不是ROOT, 那么url會帶上該名字作為context進(jìn)行路由, 例如原本的地址為http://127.0.0.1:8080/test, 會變成http://127.0.0.1:8080/app/test.
如果帶上context, 一些靜態(tài)資源由于是絕對路徑會找不到, 一些filter路徑匹配也需要修改, 改動較大, 因此去除context規(guī)避這些問題.
tomcat也支持通過修改conf/server.xml來去除context, 這里簡單起見采用了重命名為ROOT的方式.
如果應(yīng)用沒有提供http服務(wù), 或者使用的是相對路徑, 配置上也通過*進(jìn)行路徑匹配, 那么就不需要重命名.
5. 多端口
但一個端口內(nèi)只有一個應(yīng)用可以不帶context, 如果多個應(yīng)用都需要不帶context, 那么就需要通過端口進(jìn)行路由.
修改tomcat的conf/server.xml, 每個端口對應(yīng)都添加一段如下配置, 注意name和appBase需不同, 這個配置port為8081
<Service name="Catalina1"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine defaultHost="localhost" name="Catalina1"> <Host appBase="webapps1" autoDeploy="true" name="localhost" unpackWARs="true"/> </Engine> </Service>
6. tomcat啟停
./bin/startup.sh ./bin/shutdown.sh
7. 其他
因為我們的項目都自定義了日志打印, 所以可以去掉tomcat的日志打印, 修改/bin/catalina.sh, 把CATALINA_OUT指向/dev/null.
同樣修改/bin/catalina.sh, 往JAVA_OPTS中添加skywalking所需要的agent等命令, 但是由于多個項目被集成在一個進(jìn)程中, 只能有一個名字. 遠(yuǎn)程debug同理.
JAVA_OPTS="$JAVA_OPTS -javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=app -Dskywalking.collector.backend_service=1127.0.0.1:11800"
以上就是springboot war包部署過程詳解的詳細(xì)內(nèi)容,更多關(guān)于springboot war包部署的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java處理數(shù)據(jù)庫不支持的emoji表情符問題解決
這篇文章主要介紹了java處理數(shù)據(jù)庫不支持的emoji表情符問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09java+vue3+el-tree實現(xiàn)樹形結(jié)構(gòu)操作代碼
基于springboot + vue3 elementPlus實現(xiàn)樹形結(jié)構(gòu)數(shù)據(jù)的添加、刪除和頁面展示,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06Spring Boot 2.4新特性減少95%內(nèi)存占用問題
這篇文章主要介紹了Spring Boot 2.4新特性減少95%內(nèi)存占用問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Springboot中如何使用Redisson實現(xiàn)分布式鎖淺析
redisson是redis的java客戶端程序,國內(nèi)外很多公司都有在用,下面這篇文章主要給大家介紹了關(guān)于Springboot中如何使用Redisson實現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下2021-10-10SpringBoot整合liquibase及l(fā)iquibase生成初始化腳本的方式
這篇文章主要介紹了SpringBoot整合liquibase的相關(guān)資料,文中給大家介紹了liquibase生成初始化腳本的兩種方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02Java實現(xiàn)微信公眾平臺朋友圈分享功能詳細(xì)代碼
這篇文章主要介紹了Java實現(xiàn)微信公眾平臺朋友圈分享功能詳細(xì)代碼,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。2017-11-11Java中的構(gòu)造方法this、super的用法詳解
這篇文章較詳細(xì)的給大家介紹了Java中的構(gòu)造方法this、super的用法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-07-07Spring Boot創(chuàng)建可執(zhí)行jar包的實例教程
這篇文章主要介紹了Spring Boot創(chuàng)建可執(zhí)行jar包的實例教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02