Spring Boot部署到Tomcat過(guò)程中遇到的問(wèn)題匯總
前言
Spring Boot項(xiàng)目一般都是內(nèi)嵌tomcat或者jetty服務(wù)器運(yùn)行,很少用war包部署到外部的服務(wù)容器,即使放到linux中,一般也是直接啟動(dòng)Application類(lèi),但是有些時(shí)候我們需要部署到外部的服務(wù)器,這對(duì)于Spring Boot來(lái)說(shuō)卻有點(diǎn)麻煩
下面就記錄下自己部署的第一個(gè)SpringBoot項(xiàng)目到Tomcat中遇到的問(wèn)題,三個(gè)地方需要注意:頭疼……
詳細(xì)如下:
1、SpringBoot有自己內(nèi)置Tomcat容器,所以要告訴它不使用內(nèi)置容器,不指定Tomcat版本配置如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
2、Application類(lèi)需要如下改動(dòng),其中exclude是忽略數(shù)據(jù)庫(kù)的注解(我沒(méi)弄數(shù)據(jù)庫(kù)):
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
3、JDK版本要一直!我開(kāi)始服務(wù)器用的jdk1.7,本地環(huán)境用的1.8,結(jié)果本地怎么調(diào)試運(yùn)行都正常,服務(wù)器tomcat啟動(dòng)正常,jsp訪問(wèn)都正常,接口全部404,控制臺(tái)也沒(méi)有出現(xiàn)SpringBoot的標(biāo)示?。。?!研究了一整天……頭疼……
我的代碼:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>wechatServer</artifactId>
<packaging>war</packaging>
<url>http://maven.apache.org</url>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除內(nèi)置容器,排除內(nèi)置容器導(dǎo)出成war包可以讓外部容器運(yùn)行spring-boot項(xiàng)目 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional><!-- optional=true,依賴(lài)不會(huì)傳遞,該項(xiàng)目依賴(lài)devtools;之后依賴(lài)myboot項(xiàng)目的項(xiàng)目如果想要使用devtools,需要重新引入 -->
</dependency>
</dependencies>
<!--修改打包設(shè)置 -->
<build>
<plugins>
<!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin> -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<skipTests>true</skipTests>
<!-- 打成war包時(shí)名子 -->
<warName>wechatServer</warName>
<!-- mave時(shí)啟用的main路徑(因?yàn)槠渌锩鏈y(cè)試時(shí)也加了main函數(shù)) -->
<mainClass>${start-class}</mainClass>
<skip>true</skip><!-- 跳過(guò)測(cè)試 -->
<testFailureIgnore>true</testFailureIgnore>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
Application類(lèi):
package wechatService.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Hello請(qǐng)求:
@RestController
@RequestMapping
public class LoginController {
@RequestMapping("/hello/{myName}")
String index(@PathVariable String myName) {
return "Hello "+myName+"!!!";
}
}
application.properties我這里只配置了端口,然而部署到tomcat以后這里就不起作用了:
server.port = 80
我的目錄結(jié)構(gòu):
最后我的完整代碼:http://xiazai.jb51.net/201803/yuanma/wechatServer(jb51.net).rar
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- SpringBoot部署在tomcat容器中運(yùn)行的部署方法
- SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法
- SpringBoot應(yīng)用部署于外置Tomcat容器的方法
- SpringBoot war包部署到Tomcat服務(wù)器
- Springboot打成war包并在tomcat中運(yùn)行的部署方法
- spring Boot打包部署到遠(yuǎn)程服務(wù)器的tomcat中
- springboot項(xiàng)目打成war包部署到tomcat遇到的一些問(wèn)題
- 如何把spring boot項(xiàng)目部署到tomcat容器中
- 如何基于SpringBoot部署外部Tomcat過(guò)程解析
相關(guān)文章
利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能
這篇文章主要介紹了利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能,Struts框架是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12
SpringBoot任務(wù)之定時(shí)任務(wù)相關(guān)知識(shí)總結(jié)
今天給大家整理的文章是SpringBoot定時(shí)任務(wù)的相關(guān)知識(shí)點(diǎn),文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)SpringBoot任務(wù)的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析
這篇文章主要介紹了Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Spring操作JdbcTemplate數(shù)據(jù)庫(kù)的方法學(xué)習(xí)
這篇文章主要為大家介紹了Spring操作JdbcTemplate數(shù)據(jù)庫(kù)方法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
詳解Spring DeferredResult異步操作使用場(chǎng)景
本文主要介紹了Spring DeferredResult異步操作使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
java實(shí)現(xiàn)抽獎(jiǎng)概率類(lèi)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)抽獎(jiǎng)概率類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
ConstraintValidator類(lèi)如何實(shí)現(xiàn)自定義注解校驗(yàn)前端傳參
這篇文章主要介紹了ConstraintValidator類(lèi)實(shí)現(xiàn)自定義注解校驗(yàn)前端傳參的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot創(chuàng)建maven多模塊項(xiàng)目實(shí)戰(zhàn)代碼
本篇文章主要介紹了SpringBoot創(chuàng)建maven多模塊項(xiàng)目實(shí)戰(zhàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

