springboot项目打成war包放入tomcat中运行的详细步骤

发布时间:2021-09-04 11:14:47 作者:chen
来源:亿速云 阅读:236
# 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>

二、项目代码改造

2.1 修改启动类

继承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);
    }
}

2.2 解决静态资源路径问题

application.properties中添加配置:

# 解决静态资源404问题
spring.mvc.static-path-pattern=/**
spring.web.resources.static-locations=classpath:/static/

三、打包生成war文件

3.1 使用Maven命令打包

mvn clean package -DskipTests

3.2 打包结果验证

在target目录下应生成项目名.war文件:

target/
  ├─ 项目名.war
  └─ ...

3.3 自定义war包名称

在pom.xml中添加:

<build>
    <finalName>custom-name</finalName>
    ...
</build>

四、Tomcat部署配置

4.1 Tomcat基本配置

  1. 下载并解压Tomcat
  2. 配置conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           URIEncoding="UTF-8"/>

4.2 部署war包到Tomcat

两种部署方式:

方式一:直接拷贝到webapps

cp target/项目名.war ${TOMCAT_HOME}/webapps/

方式二:通过Manager界面部署

  1. 访问 http://localhost:8080/manager/html
  2. 上传war文件部署

4.3 配置外部化参数

在Tomcat的conf/catalina.properties中添加:

# SpringBoot配置文件优先级
spring.config.location=file:/path/to/your/config/

五、常见问题解决方案

5.1 404错误排查

  1. 检查上下文路径是否匹配
  2. 确认Controller是否添加@RequestMapping
  3. 查看Tomcat日志catalina.out

5.2 静态资源加载失败

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }
}

5.3 数据库连接池报错

建议使用Tomcat JDBC连接池:

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

六、高级配置技巧

6.1 多环境打包

mvn package -Pprod -DskipTests

6.2 排除测试文件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <packagingExcludes>WEB-INF/classes/**/*.properties</packagingExcludes>
    </configuration>
</plugin>

6.3 启用Gzip压缩

conf/server.xml中:

<Connector ... compression="on" compressionMinSize="2048" 
           compressableMimeType="text/html,text/xml,text/css,application/javascript"/>

七、性能优化建议

  1. JVM参数调整

    export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
    
  2. 线程池配置

    server.tomcat.max-threads=200
    server.tomcat.accept-count=100
    
  3. 禁用热部署

    spring.devtools.restart.enabled=false
    

结语

通过以上步骤,我们完成了SpringBoot项目从jar到war的改造,并成功部署到外部Tomcat容器。这种部署方式更适合传统企业环境,可以与现有JavaEE项目更好地集成。实际部署时请根据具体环境调整参数,并做好日志监控工作。

注意:生产环境建议使用Nginx+Tomcat的集群部署方案,并配置HTTPS安全连接。 “`

推荐阅读:
  1. idea将web项目打成war包
  2. SSM项目频繁打成war包部署,使用tomcat和maven实现热部署配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot tomcat

上一篇:Linux系统yum命令的实例用法

下一篇:MySQL中的隐藏列的具体查看方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》