1. 程式人生 > >將SpringBoot工程部署到外部Tomcat伺服器

將SpringBoot工程部署到外部Tomcat伺服器

之前都是在ide裡通過外掛指定tomcat服務,今天通過bin下面的bat檔案啟動tomcat,一閃而過,服務一直沒起來。後來查了資料,腳本里面需要指定jdk和tomcat的安裝目錄

SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_67
SET TOMCAT_HOME=D:\apache-tomcat-7.0.64

startup.bat和shutdown.bat都要配。

平時都是通過Application.java啟動應用上下文,部署到外邊的tomcat需要重寫這個檔案:
1、class類繼承SpringBootServletInitializer;
2、重寫configure方法

package org.lindl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.support.SpringBootServletInitializer;

/**
 * Created by lin on 2017/1/29.
 */
//@ServletComponentScan @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main
(String[] args ) { SpringApplication.run(Application.class, args); } }

pom.xml遮蔽內嵌的tomcat

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

最簡單的方式就是將應用打包成war包,然後放到外部tomcat的webapps目錄下,tomcat啟動的時候會將war檔案解壓到當前目錄下。
打包成war的話在pom.xml裡新增

<packaging>war</packaging>

Maven Projects裡邊執行 Liftcycle->package

這樣啟動外部tomcat,通過url訪問服務需要在ip和埠後面加上專案名拼服務地址才能訪問。不加專案名的話在conf下的server.xml的Host標籤裡配上

<Context path="" docBase="D:\apache-tomcat-7.0.64\webapps\spring_boot-1.0-SNAPSHOT" debug="0" reloadable="true"/>

docBase是專案檔案的實體地址