广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot2 session设置超时时间无效的解决
  • 326
分享到

Springboot2 session设置超时时间无效的解决

2024-04-02 19:04:59 326人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

问题: 今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。 解决方案: server.*属性用于

问题:

今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。

解决方案:

  • server.*属性用于控制Spring Boot使用的嵌入式容器spring Boot将使用ServletWEBServerFactory实例之一创建servlet容器的实例。 这些类使用server.*属性来配置受控的servlet容器(Tomcat,jetty等)。
  • 当应用程序作为war文件部署到Tomcat实例时, server.*属性不适用。 它们不适用,因为可以使用预先配置的servlet容器(因为它是远程运行的服务)。 因此,部署到远程Tomcat将使server.*属性无用。

1. 按照网上给的帖子更改配置文件(如果是jar启动生效) ,如下:


server:
  servlet:
    session:
      timeout: PT1H        # 1小时过期
      cookie:
        max-age: PT1H      # 1小时过期

说明:PT1H 意思是设置session失效的时间是1小时。

扩展:Duration

通过查看springboot源码发现setTimeouot方法,这里要求传入Duration的实例


    public void setTimeout(Duration timeout) {
       this.timeout = timeout;
    }

Duration是在Java8中新增的,主要用来计算日期差值,Duration是被final声明的,并且是线程安全的。

如果转换字符串方式,类似于 SimpleDateFORMat 的格式化日期方式

Duration 字符串类似数字有正负之分:默认为正,负以'-'开头,下面紧接着'PT', 下面时间字母:

  • 'D' – 天
  • 'H' – 小时
  • 'M' – 分钟
  • 'S' – 秒

每个单位都必须由数字开始,且时分秒顺序不能乱,比如:PT2H3M2S 等于 -PT-2H-3M-2S。

2. 设置tomcat的session超时

1)在tomcat的conf目录下,更改servler.xml:


<Context path="/abtest" docBase="/abtest"  
  defaultSessionTimeOut="3600" isWARExpanded="true"  
  isWARValidated="false" isInvokerEnabled="true"  
  isWorkDirPersistent="false"/>

2) 项目中更改web.xml:


<session-config>  
    <session-timeout>20</session-timeout>  
</session-config>

3)在程序中更改


session.setMaxInactiveInterval(30*60);

当你遇到同样的问题时,请先看上面的红字,按顺序排查即可。

测试代码:


@RestController
@RequestMapping("/valid-time")
public class TestController { 
    @GetMapping("/test")
    public String validTime(httpservletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession(); 
        int sessionTime = session.getMaxInactiveInterval(); 
        return new StringBuilder("sessionTime=").append(sessionTime).toString();
    }
}

时间不同步导致Spring session失效的巨坑

Linux服务器时间不同步导致Spring session失效的巨坑

由于业务的需要,将原本单机环境转为集群式环境,为了不修改任务所以选择了spring session + Redis作为session共享方案。

确认技术方案之后就在网上巴拉巴拉的搜索一堆关于spring session的资料,看了一遍没有发现前人有任何躺坑后,开始着手。

安装redis过程忽略。

根据资料一步一步的将spring session加入工程,单节点情况项目成功跑起来,没有报错,session也成功的写入了redis。

然后为了稳妥起见,又在自己电脑上安装了Nginx,并部署了3个tomcat,一切看起来都那么完美,多个节点之间完成了session共享。

到目前已经完成了所有前期准备,就差最后一步了。

噩梦开始了……

在线上将所有节点部署完成,然后打开浏览器顺利访问到应用,当然我们不能仅仅停留在看到页面完事的地步,怎么也要登录登录吧,于是……

然后……

无数次的输入用户密码,提示登录成功,最终的结果还是被拒之门外,o(╥﹏╥)o

接下来就是无数的填坑之旅

日志……

看各种请求请求……

怀疑spring session有BUG……

甚至开启了远程DEBUG模式调试,终于在万能的DEBUG模式下看到,spring session的getSession的时候,如果获取到了session,首先会判断此session有没有过期,比较的方式也很简单,就是获取当前系统时间去和session的过期时间进行比较,如果当前时间小于过期时间,则标识此session没有过期。看到这里,瞬间有了一股醍醐灌顶之感,小宇宙终于在这里爆发了。

尼玛—>获取的session全部是过期的,然后……然后……当然是赶紧跑去看服务器时间,于是……哭了o(╥﹏╥)o,原来尼玛是你坑了我……

为了纪念这次躺坑之旅,特发此文

另外顺便记录一下Linux服务器时间同步

date命令:

date :查看当前时间,结果如下:Tue Mar 4 01:36:45 CST 2017

date -s 09:38:40 :设置当前时间,结果如下:Tue Mar 4 09:38:40 CST 2017

ntpdate命令:

ntpdate -u ntp.api.bz :网络时间同步命令

ntp常用服务器:

中国国家授时中心:210.72.145.44

NTP服务器(上海) :ntp.api.bz

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Springboot2 session设置超时时间无效的解决

本文链接: https://www.lsjlt.com/news/129678.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot2 session设置超时时间无效的解决
    问题: 今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。 解决方案: server.*属性用于...
    99+
    2022-11-12
  • Springboot2 session设置超时时间无效的解决方法
    本篇内容介绍了“Springboot2 session设置超时时间无效的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:今天项目...
    99+
    2023-06-20
  • Java如何设置session超时时间
    小编给大家分享一下Java如何设置session超时时间,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在一般系统登录后,都会设置一个当前session失效的时间,...
    99+
    2023-06-06
  • mysql怎么设置session的超时时间
    本篇内容介绍了“mysql怎么设置session的超时时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • SpringBoot2.x设置Session失效时间及失效跳转方式
    目录设置Session失效时间及失效跳转Session失效后如何跳转到Session失效地址设置Session失效的几种方式如果是1.5.6版本还可以设置设置Session失效时间及...
    99+
    2022-11-13
  • SpringBoot2.x如何设置Session失效时间及失效跳转
    这篇文章给大家分享的是有关SpringBoot2.x如何设置Session失效时间及失效跳转的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。设置Session失效时间及失效跳转#Session超时时间设置,单位是秒...
    99+
    2023-06-29
  • 服务器session超时时间怎么设置
    服务器session超时时间可以通过修改web服务器的配置文件来设置。具体操作步骤如下:1. 打开web服务器的配置文件,如Apac...
    99+
    2023-06-10
    session超时 session
  • JWT设置token过期时间无效的解决
    目录JWT 设置token过期时间无效原因原因分析JWT token过期自动续期解决方案JWTtokentoken过期刷新方案JWT 设置token过期时间无效 原因 设置超时时间的...
    99+
    2022-11-13
  • 设置session过期时间不生效怎么解决
    如果设置session过期时间不生效,可能是由于以下原因:1. 服务器配置问题:检查服务器的session配置是否正确。确保sess...
    99+
    2023-08-17
    session
  • Feign Client 超时时间配置不生效的解决
    目录Feign Client 超时时间配置不生效解决方案问题描述Feign Client的各种超时时间设置1. Feign Client Configuration2. Hystri...
    99+
    2022-11-12
  • php如何设置session失效时间
    这篇文章主要为大家展示了“php如何设置session失效时间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何设置session失效时间”这篇文章吧。php设置session失效时间的方...
    99+
    2023-06-15
  • JWT设置token过期时间无效怎么解决
    这篇文章主要介绍了JWT设置token过期时间无效怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JWT设置token过期时间无效怎么解决文章都会有所收获,下面我们一起来看看吧。JWT 设置token过期...
    99+
    2023-07-02
  • 设置session有效时间的三种方式
    目录设置session有效时间的三种方式方法一方法二方法三session详细解析(是否过期、失效时间)总结设置session有效时间的三种方式 session的默认有效时间是30分钟...
    99+
    2023-05-19
    设置session有效时间 设置session时间 session时间设置
  • JS设置时间无效怎么办
    这篇文章主要为大家展示了“JS设置时间无效怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS设置时间无效怎么办”这篇文章吧。在发送短信息验证码的时候要用到...
    99+
    2022-10-19
  • mybatis设置sql执行时间超时时间的方法
    存在这样的场景,当一些比较耗时的查询时,如果不中断,则会导致数据库堵塞,进而会拖垮整个数据库服务的正常运行。 1.如果你使用的是HikariCP连接池的话,可以在配置文件设置conn...
    99+
    2022-11-13
  • Ubuntu的tzselect设置时间失效怎么解决
    今天小编给大家分享一下Ubuntu的tzselect设置时间失效怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。tzs...
    99+
    2023-07-04
  • golang在GRPC中设置client的超时时间
    超时 建立连接 主要就2函数Dail和DialContext。 // Dial creates a client connection to the given target. ...
    99+
    2022-11-12
  • Springboot RestTemplate设置超时时间的简单方法
    目录排查:Java Config配置配置文件指定RestTemplate 设置超时时间注意点总结RestTemplate未设置超时时间,导致RabbitMQ队列大量堆积,消费者假死,...
    99+
    2022-11-13
  • springboot配置mybatis的sql执行超时时间怎么解决
    这篇“springboot配置mybatis的sql执行超时时间怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“spr...
    99+
    2023-07-04
  • springboot配置mybatis的sql执行时间超时如何解决
    这篇文章主要介绍“springboot配置mybatis的sql执行时间超时如何解决”,在日常操作中,相信很多人在springboot配置mybatis的sql执行时间超时如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作