LoginSignup
9
5

More than 5 years have passed since last update.

Spring Bootの組み込みTomcatのSession Persistenceを有効にする

Posted at

通常Tomcatは再起動すると、セッションに保持していた情報は再起動後も引き継がれる(これはTomcatのデフォルト設定)。仕組みとしては、Tomcat停止時にセッション情報を一時ファイルに書き出し、Tomcat起動時にそのファイルを読み込みセッション情報をメモリに展開している。これを回避したい場合は、$CATALINA_HOME/conf/context.xmlに<Manager pathname="" />を追加することで回避できる。

context.xml
<Context>

   ~省略~

  // 以下を追加 
   <Manager pathname="" />
</Context>

ただ、Spring Boot(Ver1.3以上)の組み込みTomcatは再起動すると、セッションに保持していた情報は再起動後は引き継がれない(通常のTomcatとは逆の挙動となる)。じゃあ、$CATALINA_HOME/conf/context.xmlを修正しよう、、と思ってもそもそもファイルが存在しない(組み込みTomcatなので)。そんな時は、application.properties(application.yml)に以下の設定値を追加することで解決することができる。

application.properties
server.session.persistent=true

Spring Bootの組み込みTomcatのSession Persistenceはデフォルトで無効(false)なので、trueにしてやることでセッション永続化が可能となる。

注意点

以下のようにSpring Sessionへの依存があると、TomcatのHttpSessionではなくSpring Sessionが使われるため、application.propertiesでserver.session.persistentの設定をしても効かない。

pom.xml
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5