第 2 章 使用 Spring Session 外部调整会话


将 Spring 应用程序的会话数据存储在 Data Grid 缓存中,并独立于容器。

2.1. 使用 Spring Session 外部调整会话

使用 Spring Session API 将会话数据外部化到 Data Grid。

流程

  1. 将依赖项添加到 pom.xml 中。

    • 嵌入式缓存: infinispan-spring6-embedded
    • 远程缓存: infinispan-spring6-remote

      以下示例是远程缓存:

      <dependencies>
          <dependency>
              <groupId>org.infinispan</groupId>
              <artifactId>infinispan-core</artifactId>
          </dependency>
          <dependency>
              <groupId>org.infinispan</groupId>
              <artifactId>infinispan-spring6-remote</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>${version.spring}</version>
          </dependency>
          <dependency>
             <groupId>org.springframework.session</groupId>
             <artifactId>spring-session-core</artifactId>
             <version>${version.spring}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
             <version>${version.spring}</version>
         </dependency>
      </dependencies>
  2. 指定适当的 FactoryBean 以公开 CacheManager 实例。

    • 嵌入式缓存: Spring embeddedCacheManagerFactoryBean
    • 远程缓存: SpringRemoteCacheManagerFactoryBean
  3. 使用适当的注解启用 Spring Session。

    • 嵌入式缓存 :@EnableInfinispanEmbeddedHttpSession
    • 远程缓存 :@EnableInfinispanRemoteHttpSession

      这些注解有可选参数:

      • maxInactiveIntervalInSeconds 设置会话过期时间(以秒为单位)。默认值为 1800
      • cacheName 指定存储会话的缓存名称。默认为 sessions

以下示例显示了完整的、基于注解的配置:

@EnableInfinispanEmbeddedHttpSession
@Configuration
public class Config {

   @Bean
   public SpringEmbeddedCacheManagerFactoryBean springCacheManager() {
      return new SpringEmbeddedCacheManagerFactoryBean();
   }

   //An optional configuration bean responsible for replacing the default
   //cookie that obtains configuration.
   //For more information refer to the Spring Session documentation.
   @Bean
   public HttpSessionIdResolver httpSessionIdResolver() {
       return HeaderHttpSessionIdResolver.xAuthToken();
   }
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.