SpringBoot默认达成jar包,使用SpringBoot构想web应用,默认使用内置的Tomcat。但考虑到项目需要集群部署或者进行优化时,就需要打成war包部署到外部的Tomcat服务器中。

    本文所使用SpringBoot版本为:2.0.3.RELEASE

一、修改pom.xml文件将默认的jar方式改为war:

<groupId>com.example</groupId>
<artifactId>application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--默认为jar方式-->
<!--<packaging>jar</packaging>-->
<!--改为war方式-->
<packaging>war</packaging>

二、排除内置的Tomcat容器(两种方式都可):

1.排除spring-boot-starter-web中的Tomcat

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2.添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
        相当于compile,但是打包阶段做了exclude操作-->
    <scope>provided</scope>
</dependency>

三、继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法:

为什么继承该类,SpringBootServletInitializer源码注释:

Note that a WebApplicationInitializer is only needed if you are building a war file and deploying it.

If you prefer to run an embedded web server then you won't need this at all.

注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。

如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。

启动类代码:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

1.方式一,启动类继承SpringBootServletInitializer实现configure:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

2.方式二,新增加一个类继承SpringBootServletInitializer实现configure:

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //此处的Application.class为带有@SpringBootApplication注解的启动类
        return builder.sources(Application.class);
    }

}

注意事项:

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的

server.port=

server.servlet.context-path=

将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。

为了防止应用上下文所导致的项目访问资源加载不到的问题,

建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签:

<build>
    <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
    <finalName>war包名称</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

使用mvn命令行打包,运行:

clean是清除之前的包,-Dmaven.test.skip=true是忽略测试代码

jar 方式打包,使用内置Tomcat:mvn clean install -Dmaven.test.skip=true

运行:java -jar 包名.jar

war方式打包,使用外置Tomcat:mvn clean package -Dmaven.test.skip=true

运行:${Tomcat_home}/bin/目录下执行startup.bat(windows)或者startup.sh(linux)

SpringBoot打成war包,部署到Tomcat服务器的更多相关文章

  1. 通过一次SpringBoot打成war包部署到tomcat启动总结一般jar包冲突的解决方法

    启动时,报错信息如下: 28-Sep-2018 16:55:41.567 严重 [localhost-startStop-1] org.apache.catalina.core.StandardCon ...

  2. SpringBoot之打成war包部署到Tomcat

    正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服 ...

  3. 将web项目打成war包部署在tomcat步骤

    将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...

  4. 将Web项目War包部署到Tomcat服务器

    1. 配置Java运行环境 1.1 下载并安装JDK 从官网上下载最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下载后安装,选择想把JD ...

  5. Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案

    Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.proper ...

  6. IntelliJ IDEA打包WAR并部署运行(mac osx)将Web项目War包部署到Tomcat服务器基本步骤(完整版)

    用IntelliJ IDEA做web开发体验很好,但导出war包比eclipse麻烦了不少,以下是解决方案: 打包:1.自动打包:File —> Project Structure —> ...

  7. 将Web项目War包部署到Tomcat服务器基本步骤

    参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识:   1.1 War包 War包一般是在进行Web ...

  8. 将Web项目War包部署到Tomcat服务器基本步骤(完整版)

    1. 常识:   1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己 ...

  9. SpringBoot war包部署到Tomcat服务器

    (1)pom.xml文件修改<packaging>war</packaging>,默认是jar包,<build>节点中增加<finalName>spri ...

  10. springboot打包war包部署到tomcat

    1.pom.xml修改处 <modelVersion>4.0.0</modelVersion><groupId>com.xx</groupId>< ...

随机推荐

  1. Node.js学习笔记----day02

    认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.简单实现Apache功能 var http = require('http') var fs = require('fs') // 1. ...

  2. Selenium4.6版本浏览器自动退出问题

    Selenium4.6版本浏览器自动退出问题 代码 from selenium import webdriver driver = webdriver.Chrome() driver.get('htt ...

  3. 我这.NET菜鸟,用它开发RabbitMQ消息队列后,竟被老板一夜提拔为架构师

    [讲故事] 自2022年末推出此工具以来,相关文章已被圈内顶尖的几家.NET头条号转载,而且短短数月,已有超100个团队/个人开发者使用它来操控RabbitMQ消息队列,反响可谓十分火爆.故本次经典重 ...

  4. 亚马孙机器可能出现权限问题导致ssh无法秘钥登录的情况

    一般都是amazon会遇到,目前ali的机器没遇到过 情况是新机器,然后ssh脚本创建目录和用户和拷贝秘钥等等,后面用该新用户的秘钥登录发现一直无法登录. 把sshd的log改为debug,查看日志得 ...

  5. python爬虫(含scrapy)

    python爬虫 1.解析HTML: lxml 是一种python编写的库,可以迅速.灵活的处理xml和html 使用:根据版本的不同,有如下两种: 形式1: from lxml import etr ...

  6. 题解 TSP 但是你有约束

    Description 给定一张带权完全图,求一条路径满足 不重复经过一个点. 在过点 \(i\) 时,\(1\cdots i - 1\) 要么全访问过,要么都没有访问过. 点数 \(n\) 有 \( ...

  7. FreeFileSync:开源的文件同步工具 | Linux 中国

    转载知乎: https://zhuanlan.zhihu.com/p/194778373

  8. Android:DrawerLayout 抽屉布局没有反应

    <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" android:layo ...

  9. 基于C++的OpenGL 03 之纹理

    1. 概述 本文基于C++语言,描述OpenGL的纹理 前置知识可参考: 基于C++的OpenGL 02 之着色器 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多描述 ...

  10. C# WCF实现聊天室功能

    1.WCF是什么 Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架 看这篇文章之前,可以先看我的另一篇文章,初步了解一下WCF: ...