日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決-創(chuàng)新互聯(lián)

這篇文章主要介紹“SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決”文章能幫助大家解決問題。

丹鳳ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

先說遇到問題的情景:

初次嘗試使用spring boot框架寫了個(gè)小web項(xiàng)目,在Intellij IDEA中能正常啟動(dòng)運(yùn)行。使用maven 運(yùn)行install,生成war包,發(fā)布到本機(jī)的tomcat下,出現(xiàn)異常,主要的異常信息是  .......LifeCycleException。經(jīng)各種搜索,找到答案。

spring boot因?yàn)閮?nèi)嵌tomcat容器,所以可以通過打包為jar包的方法將項(xiàng)目發(fā)布,但是如何將spring boot項(xiàng)目打包成可發(fā)布到tomcat中的war包項(xiàng)目呢?

1. 既然需要打包成war包項(xiàng)目,首先需要在pom.xml文件中修改打包類型,將spring boot默認(rèn)的jar修改為war形式;

2. 其次spring boot的web項(xiàng)目中內(nèi)嵌tomcat服務(wù)器,所以如果我們想要發(fā)布war包到tomcat項(xiàng)目,要講spring boot中內(nèi)嵌的tomcat包依賴排除,不然產(chǎn)生沖突,打開下面代碼中的注釋即可。


  org.springframework.boot
  spring-boot-starter-web
  

有一點(diǎn)想說的是,如果本地開發(fā)的時(shí)候依然想要使用spring boot內(nèi)嵌tomcat進(jìn)行調(diào)試,添加如下依賴即可;


  org.springframework.boot
  spring-boot-starter-tomcat
  provided

3. spring boot發(fā)布jar包web程序的入口是main函數(shù)所在的類,使用@SpringBootApplication注解。但是如果war包發(fā)布至tomcat,需要增加 SpringBootServletInitializer 子類,并覆蓋它的 configure 方法,或者直接將main函數(shù)所在的類繼承 SpringBootServletInitializer 子類,并覆蓋它的 configure 方法。代碼舉例如下,

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
   
  @Override
  protected SpringApplicationBuilder configure(
      SpringApplicationBuilder application) {
    return application.sources(DemoApplication.class);
  }
 
   
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

以上就完成了spring boot項(xiàng)目打包war包的所有步驟,可以發(fā)布至tomcat7及其以上版本。

最后還有最重要的一點(diǎn),如果你本機(jī)的tomcat版本和  springboot自動(dòng)集成的8.0版本不一致。也會(huì)出問題,解決辦法 :

我本地的Tomcat版本是8.0.28, 而服務(wù)器上的Tomcat是7.0.69。 我在本地下了個(gè)Tomcat7.0.70部署也報(bào)同樣錯(cuò)誤。更加確定問題跟Tomcat版本有關(guān)。經(jīng)過多方查找資料,最后在Stackoverflow上看到一個(gè)老外說SpringBoot默認(rèn)Servlet容器是基于Tomcat8的

在打好的war包中確實(shí)發(fā)現(xiàn)了Tomcat相關(guān)jar包,而且是Tomcat8的,拿Tomcat8的embed包在Tomcat7下面那肯定是不能用啊

SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決

要支持低版本Tomcat需要在maven中指定Tomat版本,配置如下:


  7.0.69

然后依賴中加上(這個(gè)其實(shí)不加也行, 官方文檔是加上的)


  org.apache.tomcat
  tomcat-juli
  ${tomcat.version}

加上以后試了下,果然是沒問題了??戳讼聎ar包中的lib目錄,確實(shí)已經(jīng)變成Tomcat7的包了

SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決

但是我還是有點(diǎn)疑惑, 這樣配置打成包豈不是換個(gè)Tomcat版本就要重新打次包? 既然是由于SpringBoot內(nèi)部的Servlet容器造成了這個(gè)限制, 那我不用行不行? 又查了很多資料, 還真有辦法!



  org.springframework.boot
  spring-boot-starter-tomcat
  provided

關(guān)于“SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。


新聞標(biāo)題:SpringBoot項(xiàng)目打包發(fā)布到外部tomcat遇到的問題怎么解決-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/ccjgpd.html