1. 程式人生 > >spring boot web專案部署到外部tomcat

spring boot web專案部署到外部tomcat

spring boot專案打成war包部署到外部tomcat

部署到外部tomcat 在打包之前需要先將spring boot內建的tomcat去除

去除內建tomcat有2種

1:

<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>

2: 不使用第一種可直接在pom檔案中直接新增tomcat的資訊,但是需要將使用的範圍定義成provided

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

有的專案可能需要自己新增java-servlete-api的資訊

去除tomcat相關jar之後,需要新建一個類實現SpringBootServletInitializer 重寫configure方法

@SpringBootApplication
public class ServleteInitService extends SpringBootServletInitializer {


    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
	    //App類為springboot 專案的啟動類
        return application.sources(App.class);
    }

打包如下:

myeclipse maven 命令 package 或者install 都能打包,區別在與package 會在target目錄下生產打包檔案,install會在本地maven庫中生產打包檔案

將生成的war 放到tomcat webapps目錄下,一般將XXX.war改名成ROOT.war

可能遇到的問題:

1:如果打的war 部署到tomcat7或者版本更低的tomcat中 可能會導致專案無法啟動,網上有人說可以spring boot預設支援的是8 所以需要修改pom中tomcat的版本,新增

<properties>
    <tomcat.version>7.0.69</tomcat.version>
</properties>
但是 我這邊配置了之後並不好用,所以無奈只能換成tomcat8 之後啟動成功:

2:有時候打war時 可能自己的一些靜態檔案未能打到war中,導致訪問頁面時出現找不到js,css等 正常情況下預設的是打包java/main/resources 檔案下所有的檔案,如果未能打到war中 可嘗試使用<resources>標籤指定新增檔案