您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

【原】springboot打war包,部署到外部tomcat

不忘初心 不忘初心 2019-05-06 围观() 评论() 点赞() JAVA开发

简介:springboot默认使用内嵌tomcat,默认也是打jar包,如何将springboot打war包,并部署到外部tomcat呢?

springboot默认使用内嵌tomcat,默认也是打jar包,如何将springboot打war包,并部署到外部tomcat呢?

一、修改<packaging>标签的值为war

<groupId>com.wolffy</groupId>
<artifactId>reader</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--默认打jar包-->
<!--<packaging>jar</packaging>-->
<!--指定打war包-->
<packaging>war</packaging>

二、pom.xml中排除内嵌tomcat的依赖(有两种方式,二选一即可)

1、舍弃springboot-starter-web,直接添加外部tomcat依赖

<!-- 添加外部tomcat,用来打war包  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!-- 打包时不带上,只用于本地编译、测试、运行 -->
    <scope>provided</scope>
</dependency>

2、继续使用springboot-starter-web,排除它的内嵌tomcat依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除内嵌tomcat依赖 -->
    <exclusions>
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 添加servlet-api的依赖,用来打war包  -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>

这里需要稍微注意一下,在将内嵌tomcat排除之后,一些关于servlet的引用都会丢失,所以必须单独为servlet引入相关的依赖

springboot打war包,部署到外部tomcat

三、继承SpringBootServletInitializer,重写configure方法

package com.wolffy.reader;

import com.wolffy.reader.util.DefaultProfileUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * This is a helper Java class that provides an alternative to creating a web.xml.
 * This will be invoked only when the application is deployed to a servlet container like Tomcat, JBoss etc.
 * <p>
 * 两种方式:
 * 1、可以直接写在Application.java中
 * 2、可以再新写一个类,可与Application.java共存
 * <p>
 * Created by Felix on 2018/12/7.
 */
public class ApplicationWebXml extends SpringBootServletInitializer {

    /**
     * set a default to use when no profile is configured.
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 可要可不要
        DefaultProfileUtil.addDefaultProfile(builder.application());
        // 指定运行的主类,官方标准写法
        return builder.sources(Application.class);
    }

}

这一步必须要写,否则运行时会出现404。

上述三个步骤,正确配置完毕之后,将打出来的war包放到tomcat中运行,就可以看到启动类已经变成我们重写了configure的那个ApplicationWebXml.java了(如果是直接在Application.java中写的,那入口类就依旧还是Application.java)

springboot打war包,部署到外部tomcat

tomcatspringbootwar

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们