下面是讲解 Spring Boot 打成 WAR 包以及在 Tomcat 或 Wildfly 上运行的详细攻略:
1. Spring Boot 打成 WAR 包
Spring Boot 默认情况下是以嵌入式 Tomcat 启动的,如果我们希望将 Spring Boot 应用部署到外部 Tomcat 或 Wildfly 中,我们可以将其打包成 WAR 包。
1.1 引入依赖
在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.5.5</version>
<scope>provided</scope>
</dependency>
第一个依赖是 SERVLET 的 API,第二个依赖是 Spring Boot 的 Tomcat Starter。
注意,第二个依赖的 scope 要设置为 provided,这是因为我们打包成 WAR 包时,外部 Tomcat 或 Wildfly 会提供 Servlet 和 Tomcat 的实现,不需要将这些实现打包到 WAR 包中。
1.2 修改启动类
要将 Spring Boot 应用打包成 WAR 包,需要将应用的启动方式更改为 WAR。
在启动类中添加以下代码:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中,继承了 SpringBootServletInitializer 并实现其 configure 方法。
1.3 打包
在 Terminal 中使用 maven 命令将应用打包成 WAR 包:
mvn package
确定 WAR 包已经生成,位于项目的 target 文件夹下。
2. 部署 WAR 包
2.1 部署到 Tomcat
首先,需要在 Tomcat 中手动创建一个应用,这里以应用名称为 ROOT 为例:
- 将 WAR 包移动到 Tomcat 的 webapps 目录下:
bash
mv target/{war包名}.war $CATALINA_HOME/webapps/ROOT.war
- 启动 Tomcat,等待应用部署。
bash
$CATALINA_HOME/bin/startup.sh
- 在浏览器中访问
http://localhost:8080
,应该能够看到应用已经正常运行。
2.2 部署到 Wildfly
首先,需要在 Wildfly 中手动创建一个应用,这里以应用名称为 ROOT 为例:
- 将 WAR 包移动到 Wildfly 的 deployments 目录下:
bash
mv target/{war包名}.war $JBOSS_HOME/standalone/deployments/ROOT.war
- 启动 Wildfly,等待应用部署。
bash
$JBOSS_HOME/bin/standalone.sh
- 在浏览器中访问
http://localhost:8080
,应该能够看到应用已经正常运行。
以上既是 Spring Boot 打成 WAR 包在 Tomcat 或 Wildfly 下运行的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot打成war包在tomcat或wildfly下运行的方法 - Python技术站