Java 为什么我的Spring会话总是被从JDBC存储中删除?

Java 为什么我的Spring会话总是被从JDBC存储中删除?,java,spring,postgresql,session,spring-session,Java,Spring,Postgresql,Session,Spring Session,我正在和博士后一起使用春季课程。使用JdbcOperationsSessionRepository将会话持久化到我的Postgres数据库中 我在会话中使用的默认非活动时间是30天。用户登录后,我执行request.getSession().setMaxInactiveInterval()并将其更改为180天 然而,由于某些原因,180天没有得到尊重,而且每小时都会删除一次会话。例如: @EnableJdbcHttpSession class SessionConfig { // om

我正在和博士后一起使用春季课程。使用
JdbcOperationsSessionRepository
将会话持久化到我的Postgres数据库中

我在会话中使用的默认非活动时间是30天。用户登录后,我执行
request.getSession().setMaxInactiveInterval()
并将其更改为180天

然而,由于某些原因,180天没有得到尊重,而且每小时都会删除一次会话。例如:

@EnableJdbcHttpSession
class SessionConfig {

    // omitted data source & tx manager config

    @Bean
    MyJdbcOperationsSessionRepository sessionRepository(...) {
        return new ...
    }

}

此会话本应持续180天,但在下一个小时开始时它就被删除了

有人知道我如何阻止这些会话被删除,并让它们保留180天吗

我猜与此有关

以下是我的应用程序中延长用户最大非活动时间间隔的部分:

private void setupSession(HttpServletRequest request, User user) {
   HttpSession session = request.getSession();
   session.setMaxInactiveInterval(15552000);
   session.setAttribute("user-id", user.id);
}

如评论中所述,这是Spring会话JDBC集成的一个问题,该问题已在中报告

要解决此问题直到解决方案交付,您可以扩展
JdbcOperationsSessionRepository
并覆盖
cleanUpExpiredSessions
方法。在此之后,您只需通过提供扩展了
JdbcOperationsSessionRepository
并命名为
sessionRepository
(bean名称很重要,因为它必须与
JdbcHttpSessionConfiguration
中的名称匹配才能覆盖它)的bean来覆盖默认的JDBC会话存储库bean

例如:

@EnableJdbcHttpSession
class SessionConfig {

    // omitted data source & tx manager config

    @Bean
    MyJdbcOperationsSessionRepository sessionRepository(...) {
        return new ...
    }

}

您可以找到上的评论中概述的
cleanUpExpiredSessions
的解决方案。

您可以发布您的配置吗?如果我很了解。。。你想让未登录用户的会话过期时间为30天,而登录用户的会话过期时间为180天?这是库中的一个错误:谢谢你的轻推@AzhaguSurya,我已经更新了坏链接。