Chapter 2. Externalizing sessions with Spring Session
Store session data for Spring applications in Data Grid caches and independently of the container.
2.1. Externalizing Sessions with Spring Session
Use the Spring Session API to externalize session data to Data Grid.
Procedure
Add dependencies to your
pom.xml
.-
Embedded caches:
infinispan-spring5-embedded
Remote caches:
infinispan-spring5-remote
The following example is for remote caches:
<dependencies> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-core</artifactId> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-spring5-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>
-
Embedded caches:
Specify the appropriate
FactoryBean
to expose aCacheManager
instance.-
Embedded caches:
SpringEmbeddedCacheManagerFactoryBean
-
Remote caches:
SpringRemoteCacheManagerFactoryBean
-
Embedded caches:
Enable Spring Session with the appropriate annotation.
-
Embedded caches:
@EnableInfinispanEmbeddedHttpSession
Remote caches:
@EnableInfinispanRemoteHttpSession
These annotations have optional parameters:
-
maxInactiveIntervalInSeconds
sets session expiration time in seconds. The default is1800
. -
cacheName
specifies the name of the cache that stores sessions. The default issessions
.
-
-
Embedded caches:
The following example shows a complete, annotation-based configuration:
@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(); } }