您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# SpringBoot项目打成war包放入Tomcat中运行的详细步骤
## 前言
SpringBoot默认内嵌Tomcat服务器,通常以jar包形式运行。但在企业级部署时,可能需要将项目打包成war并部署到外部Tomcat容器中。本文将详细介绍从项目改造到最终部署的全流程。
---
## 一、环境准备
### 1.1 开发环境要求
- JDK 1.8+
- Maven 3.6+
- Tomcat 9.0+
- SpringBoot 2.5.x+
### 1.2 修改pom.xml配置
```xml
<!-- 修改打包方式为war -->
<packaging>war</packaging>
<!-- 排除内置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>
<!-- 添加servlet-api依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
继承SpringBootServletInitializer
并重写configure
方法:
@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);
}
}
在application.properties
中添加配置:
# 解决静态资源404问题
spring.mvc.static-path-pattern=/**
spring.web.resources.static-locations=classpath:/static/
mvn clean package -DskipTests
在target目录下应生成项目名.war
文件:
target/
├─ 项目名.war
└─ ...
在pom.xml中添加:
<build>
<finalName>custom-name</finalName>
...
</build>
conf/server.xml
:<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
两种部署方式:
cp target/项目名.war ${TOMCAT_HOME}/webapps/
http://localhost:8080/manager/html
在Tomcat的conf/catalina.properties
中添加:
# SpringBoot配置文件优先级
spring.config.location=file:/path/to/your/config/
@RequestMapping
catalina.out
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
}
建议使用Tomcat JDBC连接池:
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
mvn package -Pprod -DskipTests
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/classes/**/*.properties</packagingExcludes>
</configuration>
</plugin>
在conf/server.xml
中:
<Connector ... compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/css,application/javascript"/>
JVM参数调整:
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
线程池配置:
server.tomcat.max-threads=200
server.tomcat.accept-count=100
禁用热部署:
spring.devtools.restart.enabled=false
通过以上步骤,我们完成了SpringBoot项目从jar到war的改造,并成功部署到外部Tomcat容器。这种部署方式更适合传统企业环境,可以与现有JavaEE项目更好地集成。实际部署时请根据具体环境调整参数,并做好日志监控工作。
注意:生产环境建议使用Nginx+Tomcat的集群部署方案,并配置HTTPS安全连接。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。