第2章 Spring セッションでのセッションの外部化
Spring アプリケーションのセッションデータを Data Grid キャッシュに、コンテナーとは独立して保存します。
2.1. Spring セッションでのセッションの外部化
Spring Session API を使用して、セッションデータを Data Grid に外部化します。
手順
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>
-
組み込みキャッシュ:
適切な
FactoryBean
を指定して、CacheManager
インスタンスを公開します。-
組み込みキャッシュ:
SpringEmbeddedCacheManagerFactoryBean
-
リモートキャッシュ:
SpringRemoteCacheManagerFactoryBean
-
組み込みキャッシュ:
適切なアノテーションで 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(); } }