Spring Boot部署到Tomcat过程中遇到的问题汇总

 更新时间:2018年03月22日 11:29:40   作者:Big丶Fine  
这篇文章主要给大家分享了关于Spring Boot部署到Tomcat过程中遇到的一些问题,文中将解决的方法介绍非常详细,对同样遇到这个问题的朋友具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中,一般也是直接启动Application类,但是有些时候我们需要部署到外部的服务器,这对于Spring Boot来说却有点麻烦

下面就记录下自己部署的第一个SpringBoot项目到Tomcat中遇到的问题,三个地方需要注意:头疼……

详细如下:

1、SpringBoot有自己内置Tomcat容器,所以要告诉它不使用内置容器,不指定Tomcat版本配置如下:

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

2、Application类需要如下改动,其中exclude是忽略数据库的注解(我没弄数据库):

@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版本要一直!我开始服务器用的jdk1.7,本地环境用的1.8,结果本地怎么调试运行都正常,服务器tomcat启动正常,jsp访问都正常,接口全部404,控制台也没有出现SpringBoot的标示!!!!研究了一整天……头疼……

我的代码:

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> 
  <!-- 排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目 --> 
 </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,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 --> 
 </dependency> 
 </dependencies> 
 <!--修改打包设置 --> 
 <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包时名子 --> 
   <warName>wechatServer</warName> 
   <!-- mave时启用的main路径(因为其他包里面测试时也加了main函数) --> 
   <mainClass>${start-class}</mainClass> 
   <skip>true</skip><!-- 跳过测试 --> 
<testFailureIgnore>true</testFailureIgnore> 
<failOnMissingWebXml>false</failOnMissingWebXml> 
  </configuration> 
  </plugin> 
 </plugins> 
 </build> 
</project> 

Application类:

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请求:

@RestController 
@RequestMapping 
public class LoginController { 
 @RequestMapping("/hello/{myName}") 
 String index(@PathVariable String myName) { 
 return "Hello "+myName+"!!!"; 
 } 
} 

application.properties我这里只配置了端口,然而部署到tomcat以后这里就不起作用了:

server.port = 80 

我的目录结构:

最后我的完整代码:http://xiazai.jb51.net/201803/yuanma/wechatServer(jb51.net).rar

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Springboot 如何使用BindingResult校验参数

    Springboot 如何使用BindingResult校验参数

    这篇文章主要介绍了Springboot 如何使用BindingResult校验参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 使用JPA双向多对多关联关系@ManyToMany

    使用JPA双向多对多关联关系@ManyToMany

    这篇文章主要介绍了使用JPA双向多对多关联关系@ManyToMany,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Mac配置 maven以及环境变量设置方式

    Mac配置 maven以及环境变量设置方式

    这篇文章主要介绍了Mac配置 maven以及环境变量设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • springboot跨域问题解决方案

    springboot跨域问题解决方案

    这篇文章主要介绍了springboot跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • SpringBoot多数据源配置方式以及报错问题的解决

    SpringBoot多数据源配置方式以及报错问题的解决

    这篇文章主要介绍了SpringBoot多数据源配置方式以及报错问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • String.join()方法示例详解

    String.join()方法示例详解

    String.join() 方法是连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符,这篇文章主要介绍了String.join()方法示例详解,需要的朋友可以参考下
    2024-01-01
  • java实现递归菜单树

    java实现递归菜单树

    这篇文章主要为大家详细介绍了java实现递归菜单树,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Java生成和解析XML格式文件和字符串的实例代码

    Java生成和解析XML格式文件和字符串的实例代码

    这篇文章主要介绍了Java生成和解析XML格式文件和字符串的实例代码,需要的朋友可以参考下
    2014-02-02
  • java 中数据库连接的JDBC和驱动程序的深入分析

    java 中数据库连接的JDBC和驱动程序的深入分析

    这篇文章主要介绍了java 中数据库连接的JDBC和驱动程序的深入分析的相关资料,需要的朋友可以参考下
    2017-04-04
  • 解决slf4j 和 logback-classic遇到的坑

    解决slf4j 和 logback-classic遇到的坑

    这篇文章主要介绍了解决slf4j 和 logback-classic遇到的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论