spring boot web项目部署到外部tomcat

spring boot项目打成war包部署到外部tomcat

部署到外部tomcat 在打包之前需要先将spring boot内置的tomcat去除

去除内置tomcat有2种

1:

<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: 不使用第一种可直接在pom文件中直接添加tomcat的信息,但是需要将使用的范围定义成provided

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

有的项目可能需要自己添加java-servlete-api的信息

去除tomcat相关jar之后,需要新建一个类实现SpringBootServletInitializer 重写configure方法

@SpringBootApplication
public class ServleteInitService extends SpringBootServletInitializer {


    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
	    //App类为springboot 项目的启动类
        return application.sources(App.class);
    }

打包如下:

myeclipse maven 命令 package 或者install 都能打包,区别在与package 会在target目录下生产打包文件,install会在本地maven库中生产打包文件

将生成的war 放到tomcat webapps目录下,一般将XXX.war改名成ROOT.war

可能遇到的问题:

1:如果打的war 部署到tomcat7或者版本更低的tomcat中 可能会导致项目无法启动,网上有人说可以spring boot默认支持的是8 所以需要修改pom中tomcat的版本,添加

<properties>
    <tomcat.version>7.0.69</tomcat.version>
</properties>
但是 我这边配置了之后并不好用,所以无奈只能换成tomcat8 之后启动成功:

2:有时候打war时 可能自己的一些静态文件未能打到war中,导致访问页面时出现找不到js,css等 正常情况下默认的是打包java/main/resources 文件下所有的文件,如果未能打到war中 可尝试使用<resources>标签指定添加文件


发布了72 篇原创文章 · 获赞 51 · 访问量 22万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览