springboot war包部署过程详解

 更新时间:2023年08月17日 09:02:03   作者:outwar  
这篇文章主要为大家介绍了springboot war包部署过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

应用在共有云上的时候是打成fatjar, 通过内嵌tomcat启动的. 在私有云上需要部署在一个进程中, 通过打成war包托管给tomcat启动.

1. 代码

首先, Application启动类需要继承SpringBootServletInitializer并重写configure方法, sources的入参为Application.class.

2. pom

<packaging>${project.packaging}</packaging>
<profiles>
  <profile>
    <id>jar</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <project.packaging>jar</project.packaging>
    </properties>
  </profile>
  <profile>
    <id>war</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
      </plugins>
    </build>
    <properties>
      <project.packaging>war</project.packaging>
    </properties>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
          <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </profile>
</profiles>

在pom文件中通过profile控制打包行为, -Pwar时打成war包.

3. tomcat

tomcat10由于servlet被捐献后包名改成了jakarta, 需要升版本和修改依赖, 改动有点大, 因此选择tomcat9, 或者tomcat8.

4. context

注意war包名字修改为了ROOT, 默认情况下, 如果不是ROOT, 那么url会带上该名字作为context进行路由, 例如原本的地址为http://127.0.0.1:8080/test, 会变成http://127.0.0.1:8080/app/test. 

如果带上context, 一些静态资源由于是绝对路径会找不到, 一些filter路径匹配也需要修改, 改动较大, 因此去除context规避这些问题.

tomcat也支持通过修改conf/server.xml来去除context, 这里简单起见采用了重命名为ROOT的方式.

如果应用没有提供http服务, 或者使用的是相对路径, 配置上也通过*进行路径匹配, 那么就不需要重命名.

5. 多端口

但一个端口内只有一个应用可以不带context, 如果多个应用都需要不带context, 那么就需要通过端口进行路由.

修改tomcat的conf/server.xml, 每个端口对应都添加一段如下配置, 注意name和appBase需不同, 这个配置port为8081

<Service name="Catalina1">
    <Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
    <Engine defaultHost="localhost" name="Catalina1">
        <Host appBase="webapps1" autoDeploy="true" name="localhost" unpackWARs="true"/>
    </Engine>
</Service>

6. tomcat启停

./bin/startup.sh
./bin/shutdown.sh

7. 其他

因为我们的项目都自定义了日志打印, 所以可以去掉tomcat的日志打印, 修改/bin/catalina.sh, 把CATALINA_OUT指向/dev/null.

同样修改/bin/catalina.sh, 往JAVA_OPTS中添加skywalking所需要的agent等命令, 但是由于多个项目被集成在一个进程中, 只能有一个名字. 远程debug同理.

JAVA_OPTS="$JAVA_OPTS -javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=app -Dskywalking.collector.backend_service=1127.0.0.1:11800"

以上就是springboot war包部署过程详解的详细内容,更多关于springboot war包部署的资料请关注脚本之家其它相关文章!

相关文章

  • java集合List快速实现重复判断的方法小结

    java集合List快速实现重复判断的方法小结

    在java编写代码中经常会遇到某些重复判定或者去重的操作,本文主要为大家介绍了几个常用方法,感兴趣的小伙伴可以跟随不想一起学习一下
    2024-12-12
  • Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-01-01
  • 详解Spring3.x 升级至 Spring4.x的方法

    详解Spring3.x 升级至 Spring4.x的方法

    本篇文章主要介绍了详解Spring3.x 升级至 Spring4.x的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • JAVA自定义注解实现接口/ip限流的示例代码

    JAVA自定义注解实现接口/ip限流的示例代码

    本文主要介绍了JAVA自定义注解实现接口/ip限流的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • springboot 错误处理小结

    springboot 错误处理小结

    在 java web开发过程中,难免会有一些系统异常或人为产生一些异常。在 RESTful springboot 项目中如何优雅的处理?下面脚本之家小编给大家带来了springboot 错误处理小结,感兴趣的朋友一起看看吧
    2018-03-03
  • Spring 异步执行器(Executor)配置策略与命名实践

    Spring 异步执行器(Executor)配置策略与命名实践

    这篇文章主要介绍了Spring 异步执行器(Executor)配置策略与命名实践,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2026-02-02
  • Java之SSM中bean相关知识汇总案例讲解

    Java之SSM中bean相关知识汇总案例讲解

    这篇文章主要介绍了Java之SSM中bean相关知识汇总案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • IDEA项目打包的几种方式总结

    IDEA项目打包的几种方式总结

    这篇文章主要介绍了IDEA项目打包的几种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java之多个线程顺序循环执行的几种实现

    Java之多个线程顺序循环执行的几种实现

    这篇文章主要介绍了Java之多个线程顺序循环执行的几种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 如何获取springboot打成jar后的classpath

    如何获取springboot打成jar后的classpath

    这篇文章主要介绍了如何获取springboot打成jar后的classpath问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论