將SpringBoot工程部署到外部Tomcat伺服器
阿新 • • 發佈:2019-01-05
之前都是在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是專案檔案的實體地址