将spring boot项目打包成war包以及实现session共享

╰+哭是因爲堅強的太久メ 2021-10-15 00:45 406阅读 0赞

修改打包形式

在pom.xml里设置 <packaging>war</packaging>

在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <!-- 移除嵌入式tomcat插件 -->
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-tomcat</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

添加servlet-api的依赖,下面两种方式都可以,任选其一

  1. 第一种


    javax.servlet
    javax.servlet-api
    3.1.0
    provided
  2. 第二种


    org.apache.tomcat
    tomcat-servlet-api
    8.0.36
    provided

修改启动类,并重写初始化方法

我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级目录下添加一个SpringBootStartApplication类,
其代码如下:

  1. /** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */
  2. public class SpringBootStartApplication extends SpringBootServletInitializer {
  3. @Override
  4. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  5. // 注意这里要指向原先用main方法执行的Application启动类
  6. return builder.sources(Application.class);
  7. }
  8. }

针对有websocket功能的

注释掉WebSocketConfig.java(websocket配置类)中的bean(有的说只需注释掉@bean这行就可以,未测试)

  1. /*@Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }*/

pom添加依赖jar包

  1. <dependency>
  2. <groupId>javax</groupId>
  3. <artifactId>javaee-api</artifactId>
  4. <version>7.0</version>
  5. <scope>provided</scope>
  6. </dependency>

打包部署

在项目根目录下(即包含pom.xml的目录),在命令行里输入:
mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。
然后把target目录下的war包放到tomcat的webapps目录下,启动tomcat,即可自动解压部署。

最后在浏览器中输入

http://localhost:[端口号]/[打包项目名]/

注:项目配置文件端口和tomcat端口可不需一致。
多次试验,事实证明打成war包,配置文件里的端口会失效,会直接用tomcat设置的端口,所以配置文件的端口是多少都不影响

发布成功

注:多tomcat设置session共享方法

  1. 导入依赖


    org.springframework.session
    spring-session-data-redis

    org.springframework.boot
    spring-boot-starter-data-redis
  2. application.yml中设置session存储方式
    spring.session.store-type=redis

  3. 然后为主类(启动类)添加 @EnableRedisHttpSession 注解

发表评论

表情:
评论列表 (有 0 条评论,406人围观)

还没有评论,来说两句吧...

相关阅读