没有 Redis 的 Spring Session

标签 spring tomcat spring-websocket spring-session

我想尝试 Spring Session 集成,以便将 Websocket session 与 http session 链接起来。但我还没有准备好全面使用 Radis/Hazlecast。我的服务器使用 Tomcat 复制。只有 MapSessionRepository 会做什么? Tomcat 似乎无法复制此 session 。

@EnableSpringHttpSession
...
@Override
protected Filter[] getServletFilters() {
   return new Filter[] { new DelegatingFilterProxy("springSessionRepositoryFilter")};
}
...
@Bean
public SessionRepository<ExpiringSession> sessionRepository( ) {
    return new MapSessionRepository();
}

最佳答案

使用默认构造函数实例化 MapSessionRepository 将使用 ConcurrentHashMap 来存储 session 。这意味着 session 存储是您当前 JVM 的本地存储。

这样的配置对于开发/测试目的可能很有用,但它没有利用 Spring Session 在 JVM 之外存储 session 的能力,这是关键特性之一。

关于 Tomcat 复制,注意 Spring Session 的核心概念是以容器中立的方式存储 session 。

关于没有 Redis 的 Spring Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753135/

相关文章:

angularjs - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。响应的 HTTP 状态代码为 401

tomcat - Java中的Opencms

java - 如何动态获取spring boot应用程序jar父文件夹路径?

java - 如何在 Heroku 中运行 Spring Boot WAR 应用程序?

java - 在 JpaRepository 中使用外键

java - Tomcat:以编程方式删除 websocket 端点

java - 系统属性的 Spring @value 给出 null

java - Spring-Security 中的 AbstractWebSocketMessageBrokerConfigurer 已弃用 - 有替代方案吗?

spring - 使用 RabbitMQ 的自定义目的地

java - 频繁发送到spring-websocket session : lost in transit