博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot项目以war包形式部署至外部tomcat
阅读量:4094 次
发布时间:2019-05-25

本文共 2622 字,大约阅读时间需要 8 分钟。

步骤1:继承SpringBootServletInitializer

外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法

package com.test.chaosblade;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.security.servlet.SecurityAutoConfiguration;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/** * @description: * @time: 2020-08-28 15:49 */@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, SecurityAutoConfiguration.class })public class ChaosbladeApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ChaosbladeApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass()); //此处的ChaosbladeApplication是springboot启动类 }}

备注:

该类与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,但却避免了编写额外的XML文件的麻烦

步骤2:pom.xml修改tomcat相关配置

如果要将项目打成war包,部署到外部tomcat的话,需要修改pom.xml文件。引入的spring-boot-starter-web包含了内嵌的tomcat容器,如果直接部署在外部tomcat的话会造成冲突报错。针对这个问题,可以采用以下两种方式解决:

方法1:排除内嵌tomcat

这样打出的war包中,其lib目录下才不会包含Tomcat相关的jar包

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat

由于SpringBootServletInitializer需要依赖 javax.servlet,而tomcat-embed-jasper下面的tomcat-embed-core中就有javax.servlet。tomcat-embed-jasper中scope必须是provided,provided的作用可以看我的XXXX文章。如果没用provided,那么最终打好的war里面就会有servlet-api这个jar,这样就会与tomcat本身的产生冲突

org.apache.tomcat.embed
tomcat-embed-jasper
provided

方法2:增加配置

spring-boot-starter-tomcat是Spring Boot默认就会配置的,将其设置为provided的目的是为了在打包时将该包(依赖)排除

org.springframework.boot
spring-boot-starter-tomcat
provided
org.apache.tomcat.embed
tomcat-embed-jasper
provided

步骤3:pom.xml设置打war包

war

⚠️注意:

  1. 项目名称和打包名称需要保持一致
    如果不一致的话,项目发布到webapps目录下后上下文会变化
demo

转载地址:http://suxii.baihongyu.com/

你可能感兴趣的文章
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
Node.js核心模块
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>