Tomcat7、Java8 で tomcat-redis-session-manager を動かす

https://github.com/jcoleman/tomcat-redis-session-manager

のビルド方法と Tomcat7 への組み込み方法です。

Gradle のインストール

brew install groovy
brew install gradle

vim ~/.bash_profile

homebrew でインストールを行ったら、環境変数の設定を行います。

export GRADLE_HOME=/usr/local/opt/gradle
PATH=${JAVA_HOME}/bin:${GRADLE_HOME}/bin:${PATH}
source  ~/.bash_profile

tomcat-redis-session-manager のビルド

git clone https://github.com/jcoleman/tomcat-redis-session-manager.git
cd tomcat-redis-session-manager/

vim build.gradle

今回は Java8 でビルドするため、sourceCompatibility, targetCompatibility を変更しておきます。また、リポジトリの行はコメントアウトします。

compileJava {
  sourceCompatibility = 1.8
  targetCompatibility = 1.8
}

//      repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
//        authentication(userName: sonatypeUsername, password: sonatypePassword)
//      }

できあがった jar と依存ライブラリを tomcat の lib フォルダに配置します。

cp build/libs/tomcat-redis-session-manager-2.0.0.jar /usr/local/opt/tomcat7/libexec/lib/
wget http://central.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar
wget http://central.maven.org/maven2/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2.jar

vim /usr/local/opt/tomcat7/libexec/conf/context.xml

sessionPersistPolicies の設定項目については、アプリケーションの仕様に合わせて適宜調整をします。

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
        host="localhost"
        port="6379"
        database="0"
        maxInactiveInterval="60"
        sessionPersistPolicies="SAVE_ON_CHANGE" />
vim /usr/local/opt/tomcat7/libexec/conf/web.xml

セッションの期限はこちらで変更します。

    <session-config>
        <session-timeout>1440</session-timeout>
    </session-config>

Redis のインストール

brew install redis

Redis サーバーの起動

redis-server /usr/local/etc/redis.conf