三分钟把spring boot打成war包部署到tomcat中

栏目: Java · 发布时间: 6年前

内容简介:虽然一般微服务都是把spring boot项目打成jar直接启动,但是war包作为经典的项目启动方式,是有必要掌握的。完整项目代码已上传github:写作花费了作者大量时间,求赞,求关注

虽然一般微服务都是把spring boot项目打成jar直接启动,但是war包作为经典的项目启动方式,是有必要掌握的。

完整项目代码已上传github: github.com/neatlife/my…

写作花费了作者大量时间,求赞,求关注 _(:з」∠)_

准备案例项目

可以直接拿现成的spring boot项目进行修改,也可以在https://start.spring.io/创建一个新的案例项目,比如:

三分钟把spring boot打成war包部署到tomcat中

如果是在start.spring.io上创建的新项目,需要把web组件加到项目里,这个编写测试接口会用到web组件里的控制器。

然后在idea中打开这个项目,编写两个用来测试的api

@RestController
@RequestMapping("test")
public class MyController {
    @RequestMapping("test1")
    public String test1() {
        return "test1";
    }

    @RequestMapping("test2")
    public String test2() {
        return "test2";
    }
}
复制代码

将项目打包成war包

修改pom.xml指定打包方式为war包: <packaging>war</packaging> 修改pom.xml修改spring boot内置的tomcat依赖,指定scope为provided

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

修改成果如下:

三分钟把spring boot打成war包部署到tomcat中

创建一个初始化文件初始化项目比如:MySpringBootServletInitializer.java 核心代码如下

public class MySpringBootServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MywarApplication.class);
    }
}
复制代码

执行命令 mvn clean install -Dmaven.test.skip=true 将项目打成war包,执行后到target目录查看效果

三分钟把spring boot打成war包部署到tomcat中

可以看到成功的把项目打成了war包

把项目的war放到tomcat里运行

可以使用 docker 一键启动tomcat,把项目war所在的target目录挂载到tomcat的webapps目录

docker run --name=tomcat -itd --rm -p 8888:8080 \
  -v /Users/suxiaolin/Dropbox/Projects/mywar/target:/usr/local/tomcat/webapps tomcat:8-jre8
复制代码

可以使用 docker logs -f tomcat 查看tomcat启动日志

三分钟把spring boot打成war包部署到tomcat中

可以看到tomcat内部已经开始启动mywar这个spring boot项目了

打开浏览器访问查看效果

三分钟把spring boot打成war包部署到tomcat中

成功访问到了编写的测试api

注意这个url前缀是war包完整的包名,完整url如下

http://127.0.0.1:8888/mywar-0.0.1-SNAPSHOT/test/test1
http://127.0.0.1:8888/mywar-0.0.1-SNAPSHOT/test/test2
复制代码

一些注意的点

可以修改最终的war包的名称,比如去掉文件名里的版本号:mywar.war,在pom.xml使用finalName指令可以实现

三分钟把spring boot打成war包部署到tomcat中

重新打包查看效果

三分钟把spring boot打成war包部署到tomcat中

这样访问url就方便了

三分钟把spring boot打成war包部署到tomcat中

tomcat启动时可能报这个错, 参考 Unsupported major.minor version 52.0解决办法Unsupported major.minor version 52.0 (unable to load class org.springframework.web.SpringServletContainerInitializer)

这是因为项目打包的 java 版本和tomcat的java版本不一致导致的,目前一般使用java8,tomcat的docker镜像选择tomcat:8-jre8就可以了


以上所述就是小编给大家介绍的《三分钟把spring boot打成war包部署到tomcat中》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A Philosophy of Software Design

A Philosophy of Software Design

John Ousterhout / Yaknyam Press / 2018-4-6 / GBP 14.21

This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first ......一起来看看 《A Philosophy of Software Design》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换